指示GDB 6.5使用嵌入在目标文件中的源

我一直在尝试使GNU gdb 6.5-14在调试时使用嵌入在目标文件中的源代码,而不是扫描一些目录。

主要原因是我为嵌入式平台开发并且我交叉编译,这意味着所有源都在我的计算机中。

我读到了-ggdb3标志,其中包含许多额外信息,包括源代码。 所以我开始使用那个标志进行编译。

做一个objdump -S src/lib/libfoo.so确实打印出所有源代码,汇编代码与源代码混合在一起,所以我猜它确实包含了那些信息。

唯一的事情是GDB不打印它,除非我从包含源的工作空间的nfs挂载版本运行。

有谁知道如何指示gdb在目标文件中查找代码而不是依赖外部文件?

你对-ggdb3所做的猜测是完全错误的; 目标文件包含源。 您可以通过运行'strings -a libfoo.so'来certificate这一点。

您最好的选择是学习如何使用远程调试 – 然后您可以从主机使用GDB (可以访问所有源); 另外一个优点是你需要更少的内存。 请参阅"info gdb" gdbserver

雇用俄语是正确的 – gcc从不在源文件中嵌入源代码。

它做什么(使用任何-g设置)是添加可以找到源文件的路径

GDB可以使用这些路径来查找源文件。 如果您碰巧在嵌入式文件系统上设置与将源代码保存在主机系统上的路径完全相同的路径,则可以欺骗gdb查找它们。