在Python脚本中控制的GDB中添加断点命令列表

use*_*195 7 python gdb

我正在使用Python通过批处理命令控制GDB.这是我如何调用GDB:

$ gdb --batch --command=cmd.gdb myprogram
Run Code Online (Sandbox Code Playgroud)

cmd.gdb列表只包含调用Python脚本的行

source cmd.py
Run Code Online (Sandbox Code Playgroud)

并且cmd.py脚本尝试创建断点和附加命令列表

bp = gdb.Breakpoint("myFunc()") # break at function in myprogram
gdb.execute("commands " + str(bp.number))
# then what? I'd like to at least execute a "continue" on reaching breakpoint...  
gdb.execute("run")
Run Code Online (Sandbox Code Playgroud)

问题是我不知道如何将任何GDB命令附加到Python脚本的断点.有没有办法做到这一点,或者我错过了一些更容易和更明显的自动执行断点特定命令的工具?

Cir*_*四事件 5

def stop 从 GDB 7.7.1 可以使用:

gdb.execute('file a.out', to_string=True)
class MyBreakpoint(gdb.Breakpoint):
    def stop (self):
        gdb.write('MyBreakpoint\n')
        # Continue automatically.
        return False
        # Actually stop.
        return True
MyBreakpoint('main')
gdb.execute('run')
Run Code Online (Sandbox Code Playgroud)

记录在:https : //sourceware.org/gdb/onlinedocs/gdb/Breakpoints-In-Python.html#Breakpoints-In-Python

另请参阅:如何编写 gdb 脚本(使用 python)?示例添加断点,运行,我们碰到了什么断点?