0
我正在嘗試編寫一個GDB腳本來執行有界的指令跟蹤(即啓動addr和停止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.exe中的多行gdb命令放在一個字符串中,它似乎並不喜歡這樣,要麼是它們是多命令的原因。 至於你提出的例子,我會嘗試一下,而不是使用break命令(這是我的意圖是用我的代碼) –
更新我的腳本與您的更新,現在我有問題,斷點得到設置和gdb方面,它似乎認爲它告訴應用程序運行,因爲它只是等待。但應用程序仍然認爲它停止。如果我按Ctrl + C gdb然後手動鍵入繼續它的作品。但爲什麼我的腳本繼續工作? –