我写了一个 LLVM 转换,它基本上用受保护的 malloc 和其他一些东西代替了 malloc。
我正在使用 clang(或 llvm-gcc)编译 ac 文件以获取包含调试信息的位码文件(使用 -emit-llvm 选项)。这些还包含方法名称、行号等。
之后我使用 opt 来检测这个位码文件。结果是一个检测的位码文件,仍然包含所有相关的调试信息。
在第三步也是最后一步,因为我们需要一些运行时库,所以我们使用 llvm-gcc 将位码与其他一些位码文件链接起来,以获得最终的二进制文件。
这个二进制文件我无法调试,因为它不包含任何调试信息,尽管所有链接的位码文件都包含它们。gdb 唯一能告诉我的是我们在哪个函数中,但没有行号等等......
我将不胜感激任何提示。