我正在寻找一种通过调用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。
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的调试模式。