如何标记C源文件中的位置,以供以后的断点定义使用? [英] How to 'tag' a location in a C source file for a later breakpoint definition?

查看:7
本文介绍了如何标记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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆