使用'gdb'在函数内的特定行中设置断点

nad*_*gam 16 c++ gdb

我试图在一个类(我创建的类)的成员函数中使用'gdb'设置断点到第五行.

这里我理解了如何在函数的开头设置断点,但是我想将它设置在函数内部的特定行上,或者从该函数的开头开始的特定偏移量.

一般来说,'gdb'中有一种方法可以通过设置我已经拥有的另一个断点的偏移量来设置一个断点吗?

谢谢 !

lso*_*wen 12

您可以在与当前停止位置的偏移处创建断点gdb breakpoint +<offset>.

您还可以使用gdb break <linenumber>(对于当前源文件)或gdb break <filename>:<linenumber>(对于当前文件以外的文件)在特定行号上创建断点.

文档中的更多细节.


Tom*_*mey 5

没有一种方法可以相对于函数的开头设置断点,以便在修改源文件时它将保留其相对位置。这有时会很有用;但这只是一个没有人添加到 gdb 中的功能。

它可能是从 Python 模拟的,尽管它不能完全按照普通断点的工作方式工作,因为 Python 无法访问 gdb 内部的断点重置机制。

一次性解决方案可以如其他答案中所示或通过 Python 来完成。

当我需要这种功能时——一个对源代码更改相当稳健的断点中间功能——我使用了“SDT”静态探测点。这些可以让您在源中命名这些位置。