gdb:A";“继续”;这并不意味着';t与“干涉”;“下一步”;或;“步骤”;
我目前正在通过qemu的gdb存根调试syslinux(一个引导加载程序) 最近,我编写了一些gdb命令,在每次动态(取消)加载模块时(取消)加载调试符号。为了不中断执行,我用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
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创建硬件断点吗。断点
?我看不出有任何选择。事实证明,软件断点并不总是有效的。