如何调试我们 LLVM 的代码 - 进阶

Posted by 叉叉敌 on March 30, 2023

前面简单介绍了如何从一个 bc 文件里面提炼出一个精简的 ll 文件,只包含报错的函数。

如果看到的不正确的行为是由于一个优化 pass,一个非常方便的 LLVM 选项是-opt-bisect-limit,它采用一个整数表示要运行的最高 pass 的索引值。所取 pass 的索引值在不同的运行中是稳定的;通过将其与根据结果程序自动划分搜索空间的软件相结合,可以快速确定错误的通道。当指定了-opt-bisect-limit 时,所有的运行都会被显示到标准错误中,同时显示它们的索引和输出,表明是否运行或跳过了该通道。将限制设置为索引 -1(例如,RUSTFLAGS=”-C llvm-args=-opt-bisect-limit=-1”)将显示所有的通过和它们相应的索引值。

更多阅读

github 博客

微信公众号:cdtfug,欢迎关注一起吹牛逼,也可以加微信号「xiaorik」朋友圈围观。