首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过rust的LLVM调试输出

通过rust的LLVM调试输出
EN

Stack Overflow用户
提问于 2019-04-24 00:12:32
回答 1查看 245关注 0票数 0

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

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

代码语言:javascript
复制
cargo clean && RUSTFLAGS="-Zsanitizer=address" cargo build

但是我不知道用什么命令来获得调试日志输出。

使用clang,我想人们可以添加

代码语言:javascript
复制
-mllvm -debug-only=asan

作为编译器标志。

我怎样才能通过rustc提供这样的标志呢?

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

EN

回答 1

Stack Overflow用户

发布于 2019-04-25 22:07:13

rustc的等效编译器参数是

代码语言:javascript
复制
-C llvm-args=-debug-only=<LLVM DEBUG_TYPE>

-C部件提供了对rust代码生成选项的访问。

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

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

代码语言:javascript
复制
cargo clean && RUSTFLAGS="-C llvm-args=-debug-only=asan -Zsanitizer=address" cargo build

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55815380

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档