바운드 된 Maner에서 명령 추적을 수행하는 GDB 스크립트를 작성하려고합니다 (예 : addr 및 stop addr). 아마 나는 구글에서 실패하고있다. 그러나 나는 실존에서 이것을 발견하는 것처럼 보인다.바운드 된 명령 추적을위한 GDB python 스크립트
는 여기에 내 찔린입니다 :
는python
def start_logging():
gdb.execute("set logging on")
gdb.execute("while $eip != 0xBA10012E9")
gdb.execute("x/1i $eip")
gdb.execute("stepi")
gdb.execute(" end")
gdb.execute("set logging off")
gdb.execute("set pagination off")
gdb.execute("break *0xBA19912CF")
gdb.execute("command 1 $(start_logging())")
gdb.execute("continue")
내 마음에서이 다음 중단 점을 설정가 칠 때 명령을 실행하도록 설정해야합니다. 중단 점이 발생하면 끝 주소에 도달 할 때까지 코드를 한 단계 씩 실행 한 다음 로깅을 해제합니다.
gdb로 실행할 때 응용 프로그램이 올바른 지점에서 중단되지만 명령이 실행되지 않습니다.
내가 뭘 잘못하고 있니? 죄송합니다. 이것이 잘못된 길인 경우 알려 주시기 바랍니다. gdb 스크립팅을 처음 사용했습니다.
응답 해 주셔서 감사합니다. gdb.execute가 명령을 실행하는 데 필요하다고 생각했습니다. 파일에 오류가 발생했을 때 오류가 발생했습니다. gdb.execute에 하나의 문자열로 넣으려고 시도한 다중 행 gdb 명령과 didnt은 다중 명령 인 이유 중 하나입니다. 제안 된 예제에서 break 명령 대신 내 코드를 사용하여 시도해 보겠습니다. –
내 스크립트를 업데이트로 업데이트 했으므로 중단 점에 도달하는 데 문제가 있습니다. 설정하고 gdb쪽에 그것은 응용 프로그램을 실행하는 것이라고 생각하는 것, 그냥 기다려 교수형으로. 그러나 응용 프로그램은 여전히 멈춘 것으로 생각합니다. Ctrl + c gdb를 누른 다음 수동으로 계속 입력하면 작동합니다. 그런데 내 대본이 왜 작동하지 않습니까? –