gdb:A";“继续”;这并不意味着';t与“干涉”;“下一步”;或;“步骤”;

gdb:A";“继续”;这并不意味着';t与“干涉”;“下一步”;或;“步骤”;,gdb,breakpoints,Gdb,Breakpoints,我目前正在通过qemu的gdb存根调试syslinux(一个引导加载程序) 最近,我编写了一些gdb命令,在每次动态(取消)加载模块时(取消)加载调试符号。为了不中断执行,我用continue结束了命令 break com32/lib/sys/module/elf_module.c:282 commands silent python name = gdb.parse_and_eval("module->name").string() addr = int(str(gdb.par

我目前正在通过qemu的gdb存根调试syslinux(一个引导加载程序)

最近,我编写了一些gdb命令,在每次动态(取消)加载模块时(取消)加载调试符号。为了不中断执行,我用
continue
结束了命令

break com32/lib/sys/module/elf_module.c:282 commands silent python name = gdb.parse_and_eval("module->name").string() addr = int(str(gdb.parse_and_eval("module->base_addr")), 0) gdb.execute("load-syslinux-module %s 0x%08x" % (name, addr)) end continue end 中断com32/lib/sys/module/elf_module.c:282 命令 沉默的 python name=gdb.parse_和_eval(“模块->名称”).string() addr=int(str(gdb.parse和eval(“模块->基本地址”),0) 执行(“加载syslinux模块%s 0x%08x”%(名称,地址)) 结束 持续 结束 但是,当逐行遍历代码时,如果
next
step
命令使执行命中断点,则断点优先,执行命令,包括
continue
。执行继续,不考虑我正在进行的逐行调试。如果我试图跳过具有此断点的函数,也会发生这种情况

如何在不干扰调试的同时保持(取消)动态加载调试符号


是否有
继续
命令的替代方法?也许使用断点不是正确的方法?我愿意接受任何解决方案。

这不能从gdb CLI完成。但是,使用Python很容易做到这一点

在Python中,最简单的方法是定义自己的
gdb.Breakpoint
子类,并在其上定义
stop
方法。这个方法可以做你喜欢的工作,然后
返回False
告诉gdb继续


stop
功能旨在避免
命令中的
cont
出现问题。有关更多详细信息,请参阅。

我可以使用类
gdb创建硬件断点吗。断点
?我看不出有任何选择。事实证明,软件断点并不总是有效的。