#编译器错误 #ice #rustc #调试 #最小化 #内部 #步骤

应用程序 icemelter

最小化触发内部编译器错误(ICE)的文件的工具

6 个版本

0.3.2 2023年7月17日
0.3.1 2023年4月1日
0.3.0 2023年3月18日
0.2.0 2023年3月17日
0.1.0 2023年3月17日

734开发工具 中排名

每月下载 25

MIT 许可证

27KB
621 代码行

冰融器

冰融器自动化调试 rustc 内部编译器错误(ICE)的步骤。

功能

  • 自动最小化导致 ICE 的文件(MCVEs)
  • 运行 cargo-bisect-rustc
  • 如果这样做能保持 ICE,则 rustfmt MCVEs
  • 生成可粘贴的 Markdown 报告
  • 可选地从 Github 下载 MCVEs

*这确实有效:冰融器将约 250 行的文件缩减到只有 4 行,在 #107454 中。

更多功能正在 计划中

使用方法

冰融器适用于独立的 Rust 文件。如果你的文件名为 ice.rs,则可以这样使用

icemelter ice.rs

默认情况下,结果存储到 melted.rs。一些有用的标志

  • --output:更改输出文件的存储位置
  • --bisect:使用 cargo-bisect-rustc 分割回归
  • --markdown:输出可粘贴的报告

以下是一个使用不同编译器和添加标志的示例

icemelter ice.rs -- rustc +nightly --crate-type=lib

有关更多信息,请参阅 --help

安装

从版本中

静态链接的 Linux 二进制文件可在 版本页面 上找到。

从 crates.io

您可以从 crates.io 构建已发布的版本。您需要 Rust 编译器和 Cargo 构建工具。 rustup 使获取这些工具变得非常简单。然后运行

cargo install icemelter

这将在默认情况下将二进制文件安装到 ~/.cargo/bin

构建

要从源代码构建,您需要Rust编译器和Cargo构建工具。rustup可以让您轻松地获得这些工具。然后,获取源代码

git clone https://github.com/langston-barrett/icemelter
cd icemelter

最后,构建所有内容

cargo build --release

您可以在target/release中找到二进制文件。使用cargo test运行测试。

工作原理

Icemelter的优化能力基于treereduce-rust

依赖项

~14–31MB
~548K SLoC