如何在使用cmake构建LLVM时启用--debug-only?

5
我正在使用CMake和Ninja构建LLVM,具体步骤如下:
cmake path/to/llvm/ -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_ASSERTIONS=1 -DLLVM_ENABLE_CXX1Y=1 -DLLVM_ENABLE_RTTI=1 -DLLVM_TARGETS_TO_BUILD="X86" -G Ninja

现在我正在尝试使用opt的-debug-only=mytype选项来打印有关我的自定义Pass的一些调试信息:在我的Pass代码中使用以下内容:

define DEBUG_TYPE "mytype"
DEBUG(errs() << "My debug message\n");

以下方式运行 opt 没有产生任何输出信息:
opt < a.bc > /dev/null -mypass -debug-only=mytype

根据LLVM文档所述:

出于性能考虑,在优化构建(--enable-optimized)的LLVM中不可用-debug-only选项。

我怀疑这是我的问题根源,但我找不到在使用cmake构建llvm时如何打开/关闭此选项。
2个回答

7

通过启用断言来控制它。 cmake -DLLVM_ENABLE_ASSERTIONS=ON足以将其打开。如果您没有看到调试输出,则表示您的代码未执行。


3

我在这里补充回答我的问题。正如 @Joky所说,在编译llvm时必须指定cmake -DLLVM_ENABLE_ASSERTIONS=ON。此外,因为我的插件是在llvm源目录之外构建的,所以在构建插件时也必须启用断言。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接