使用-g命令编译的程序是否有源代码可供gbd列出,即使源代码文件不可用?另外,当您在具有复杂多源文件结构的程序中的某一行设置断点时,您是否需要源代码文件的名称?
答案 0 :(得分:5)
OP的1 st 问题:
使用-g命令编译的程序是否有源代码可供gbd列出,即使源代码文件不可用?
没有。如果没有到源的路径,那么您将看不到源。
OP的2 nd 问题:
[...]当您在具有复杂多源文件结构的程序中的某一行设置断点时,您是否需要源代码文件的名称?
并非总是如此。有几种设置断点的方法。我记得的唯一两个是打破一条线或打破一个功能。如果你想在函数的第一行中断,请使用
break functionname
如果该功能存在于模块中
break __modulename_MOD_functionname
无论你如何在代码中声明它们,modulename和functionname都应该是小写的。请注意模块名称前面的两个下划线。如果您不确定,请在可执行文件上使用nm来查找符号是什么。
如果您有可用的源代码并且使用的是图形环境,请尝试使用ddd。它阻止了我的咒骂,并从gdb中消除了很多猜测。如果源可用,它将立即显示。