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

时间:2009-10-16 17:49:21

标签: c gdb

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

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

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

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

唯一的问题是GDB不会打印它,除非我从包含源的工作区的nfs安装版本运行。

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

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

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