9

我写了一个 LLVM 转换,它基本上用受保护的 malloc 和其他一些东西代替了 malloc。

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

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

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

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

我将不胜感激任何提示。

4

1 回答 1

1

据我了解,您正在运行优化(opt 工具也优化了代码和调试信息)。那么当调试是优化调试信息的结果时,您希望看到的缺失部分可能是什么?

PS 我会在评论中添加这个,但不幸的是,我没有添加评论所需的 50 个声誉。

于 2015-07-04T21:42:36.253 回答