LLVM通过生锈调试输出

问题描述 投票:0回答:1

我正在寻找一种通过调用rust编译器(通过货物)来读取LLVM调试输出的方法。我对LLVMs ASAN的输出特别感兴趣。

要使用ASAN运行构建,我可以:

cargo clean && RUSTFLAGS="-Zsanitizer=address" cargo build

但我不知道获取调试日志输出的命令。

有了clang,我想可以添加

-mllvm -debug-only=asan

作为编译器标志。

如何通过rustc提供类似这种旗帜的东西?

我正在使用当前的锈源(https://github.com/rust-lang/rust/ commit 31f5d69)自己构建rustc。

rust llvm address-sanitizer
1个回答
1
投票

rustc的等效编译器参数是

-C llvm-args=-debug-only=<LLVM DEBUG_TYPE>

-C部分提供了生成代码的选项。

llvm-args部分告诉rustc将每个后续标志转发到LLVM。如果我理解正确,您可以指定在LLVM源代码中使用cl::opt()评估的每个LLVM选项。

因此,使用ASAN构建生锈应用程序并仅查看ASAN的日志输出的完整命令将是:

cargo clean && RUSTFLAGS="-C llvm-args=-debug-only=asan -Zsanitizer=address" cargo build

旁注:我认为在构建生锈以查看相应的日志输出时,必须在config.toml中启用LLVM的调试模式。

© www.soinside.com 2019 - 2024. All rights reserved.