我正在寻找一种通过调用rust编译器(通过cargo)来读取LLVM调试输出的方法。我对LLVMs ASAN的输出特别感兴趣。
要使用ASAN运行构建,我可以这样做:
cargo clean && RUSTFLAGS="-Zsanitizer=address" cargo build但是我不知道用什么命令来获得调试日志输出。
使用clang,我想人们可以添加
-mllvm -debug-only=asan作为编译器标志。
我怎样才能通过rustc提供这样的标志呢?
我正在使用当前的rust源代码(https://github.com/rust-lang/rust/ commit 31f5d69)来构建rustc。
发布于 2019-04-25 22:07:13
rustc的等效编译器参数是
-C llvm-args=-debug-only=<LLVM DEBUG_TYPE>-C部件提供了对rust代码生成选项的访问。
llvm-args部分告诉rustc将每个后续标志转发到LLVM。如果我没理解错的话,您可以在LLVM源代码中指定使用cl::opt()计算的每个LLVM选项。
因此,使用ASAN构建rust应用程序并仅查看ASAN的日志输出的完整命令为:
cargo clean && RUSTFLAGS="-C llvm-args=-debug-only=asan -Zsanitizer=address" cargo build附注:我认为在构建rust时,必须在config.toml中启用LLVM的调试模式才能查看相应的日志输出。
https://stackoverflow.com/questions/55815380
复制相似问题