不是this question的重複,因爲我正在通過python接口來處理gdb。
This one是類似的,但沒有答案。通過python接口在gdb的斷點處執行命令
我伸出Python中的gdb.breakpoint以便它寫入特定的寄存器到文件,然後跳轉到一個地址:在0x4021ee
,我想寫的東西到文件,然後跳轉到0x4021f3
然而,command
中的任何內容都不會被執行。
import gdb
class DebugPrintingBreakpoint(gdb.Breakpoint):
def __init__(self, spec, command):
super(DebugPrintingBreakpoint, self).__init__(spec, gdb.BP_BREAKPOINT, internal = False)
self.command = command
def stop(self):
with open('tracer', 'a') as f:
f.write(chr(gdb.parse_and_eval("$rbx")^0x71))
f.close()
return False
gdb.execute("start")
DebugPrintingBreakpoint("*0x4021ee", "jump *0x4021f3")
gdb.execute("continue")
如果我明確地添加到gdb.execute(self.command)
的stop()
末,我得到Python Exception <class 'gdb.error'> Cannot execute this command while the selected thread is running.:
任何人有命令列出的與蟒蛇GDB斷點工作的例子嗎?