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

时间:2016-10-14 11:52:57

标签: c++ debugging llvm

我正在使用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选项打印一些关于我自己的传递的调试信息:在我的传递代码中使用以下内容:

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

按以下方式运行opt不会生成任何输出消息:

opt < a.bc > /dev/null -mypass -debug-only=mytype

根据LLVM documentation

  

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

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我在这里补充一个我的问题的补充答案。正如@Joky所说,编译llvm时必须指定cmake -DLLVM_ENABLE_ASSERTIONS=ON。另外,因为我的传递是在外部 llvm源代码树中构建的,所以在构建传递时也必须启用断言。