如何标记C源文件中的位置,以供以后的断点定义使用? [英] How to 'tag' a location in a C source file for a later breakpoint definition?
本文介绍了如何标记C源文件中的位置,以供以后的断点定义使用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问题: 我希望能够在C代码中放置不同的可能唯一或重复的标记,这样我就可以在GDB中使用它们来创建断点。
相似工作:
断点到行号:与源行上的断点的主要区别在于,如果以某种方式修改标记之前的代码,从而导致或多或少的行,则对标记的引用在语义上仍然是正确的,而对源行的引用则不会。
标签:我来自上一个问题How to tell gcc to keep my unused labels?,其中我先入为主地认为答案是插入标签。在与平台知识渊博的成员讨论后,我被告知Label的名称在编译后不会被保留。编译器将删除C中未使用的标签。
注入ASM标签:与前面的方法有关,如果我在C源代码中注入ASM代码,由于内联函数、编译器优化和缺乏作用域,会出现某些问题。这使得此方法不可靠。
定义一个伪函数:关于这个问题Set GDB breakpoint in C file,有一种有趣的方法,可以在代码中放置一个伪函数,然后在函数调用中添加一个断点。这种方法的问题在于,必须为每个不同的标记复制此类函数的定义。
有没有更好的解决方案来实现这一点?或者从不同的角度来攻击当前的问题?
推荐答案
使用sdt(静态定义的跟踪)探测点似乎满足所有要求。
gdbdocumentation指向如何定义探测的示例的链接。
Example use:(gdb) break -probe-stap my_probe
(这应该记录在GDB breakpoints section中,但目前没有)。
这篇关于如何标记C源文件中的位置,以供以后的断点定义使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文