gdb:不干扰“下一步”或“步骤”的“继续”
Posted
技术标签:
【中文标题】gdb:不干扰“下一步”或“步骤”的“继续”【英文标题】:gdb: A "continue" that doesn't interfer with "next" or "step" 【发布时间】:2015-10-13 02:44:17 【问题描述】:我目前正在通过 qemu 的 gdb 存根调试 syslinux(一个引导加载程序)。
最近,我编写了一些 gdb 命令,每次动态(卸载)加载模块时(卸载)加载调试符号。为了不中断执行,我以continue
结束了命令。
但是,在逐行单步执行代码时,如果next
或step
命令使执行命中断点,则断点优先,命令被执行,包括continue
。并且无论我进行的逐行调试如何,执行都会继续进行。如果我尝试跳过具有此断点的函数,也会发生这种情况。
如何在不干扰调试的情况下保持(卸载)动态加载调试符号?
continue
命令有替代方法吗?也许使用断点不是正确的方法?我会采取任何解决方案。
【问题讨论】:
【参考方案1】:这不能通过 gdb CLI 完成。但是,使用 Python 很容易做到。
在Python中最简单的方法是定义自己的gdb.Breakpoint
子类,并在其上定义stop
方法。这个方法可以做你喜欢的工作,然后return False
告诉gdb继续。
stop
工具旨在避免commands
中的cont
问题。详情请见the documentation。
【讨论】:
我可以用gdb.Breakpoint
类做一个硬件断点吗?我没有看到任何选择。事实证明,软件断点并不总是有效。以上是关于gdb:不干扰“下一步”或“步骤”的“继续”的主要内容,如果未能解决你的问题,请参考以下文章