使用gdb调试C代码时,我经常需要找到首次声明事物的位置,无论是类型(结构)还是变量。根据这个答案(GDB: break if variable equal value),在gdb中可能无法实现。这是真的吗?
如果在gdb中无法实现,还有其他策略吗?我经常使用grep
,但如果结果太多,则会失败。
答案 0 :(得分:3)
我经常要找到首先声明事物的位置,无论是类型(结构)还是变量。
声明或定义(What is the difference between a definition and a declaration?)?如果已定义,则可以使用以下命令:
检查符号表(https://sourceware.org/gdb/onlinedocs/gdb/Symbols.html#Symbols)(如果使用-g编译):
info types regexp
列出了定义类型的所有源文件。
info variables regexp
- 打印名称包含正则表达式regexp匹配项的所有变量(局部变量除外)的名称和数据类型。