为什么LLVM编译/链接过程中的调试符号丢失了?

时间:2010-02-28 16:56:23

标签: debugging llvm

我写了一个LLVM转换,它基本上用一些看守的mallocs和其他一些东西替换了malloc。

我正在使用clang(或llvm-gcc)来编译c文件以获取包含调试信息的bitcode文件(使用-emit-llvm选项)。这些还包含方法名称,行号等。

之后我正在使用opt来检测这个bitcode文件。结果是一个检测的bitcode文件,仍然包含所有相关的调试信息。

在第三步也是最后一步,由于我们需要一些运行时库,我们使用llvm-gcc将bitcode与其他一些bitcode文件链接起来以获得最终的二进制文件。

这个二进制文件我无法调试,因为它不包含任何调试信息,尽管所有链接的bitcode文件都包含它们。 gdb唯一可以告诉我的是我们在哪个函数但没有行号等等......

我会很感激任何提示。

1 个答案:

答案 0 :(得分:1)

据我所知,您正在运行优化(opt工具也可以优化代码和调试信息)。因此,当调试是优化调试信息的结果时,您希望看到缺少的部分吗?

P.S。 我会在评论中添加这个,但遗憾的是我没有50个声明来添加评论。