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

Man*_*lva 3 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
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试使用-debug-only=mytypeopt 选项打印有关我自己的通行证的一些调试信息:在我的通行证代码中使用以下内容:

define DEBUG_TYPE "mytype"
DEBUG(errs() << "My debug message\n");
Run Code Online (Sandbox Code Playgroud)

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

opt < a.bc > /dev/null -mypass -debug-only=mytype
Run Code Online (Sandbox Code Playgroud)

根据LLVM 文档

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

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

Jok*_*oky 5

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