#natvis #metabuild

natvis-pdbs

一个兼容 metabuild/build.rs 的crate,可以将 .natvis 调试可视化文件嵌入到你的可执行文件的 .pdbs 中,便于调试。

4个稳定版本

1.0.3 2022年9月7日
1.0.2 2019年12月30日
1.0.1 2019年11月30日
0.0.1 2019年11月28日

调试中排名#360

每月下载量29

MIT/Apache

12KB
80

natvis-pdbs

GitHub Build status Crates.io unsafe: no rust: 1.39.0+ Open issues License dependency status

一个兼容 metabuild / build.rs 的crate,可以将 .natvis 调试可视化文件嵌入到您的可执行文件的 .pdb 中,便于调试。

限制

  • Natvis 和 PDBs 是微软的技术,除非使用基于 MSVC 的构建工具链,否则将没有效果。
  • 虽然 crate-type=rlib crate 可以包含 .natvis 文件,但它们不应直接依赖 natvis-pdbs。 (由于 crate 在构建时是隔离的,natvis-pdbs 只有在使用最终的 .exe、.lib 或 .dll crate 时才会工作。)
  • 这利用了 %LINK% 环境变量,因为目前还没有稳定的 build.rs 兼容的任意链接参数。

快速入门

要创建包含 .natvis 文件的 crate (示例)

将一个或多个 natvis 文件放在以下任一位置。

  • crate 的根目录。
  • {root}\src 文件夹中。
  • {root}\debug_metadata 文件夹中。

其他位置(包括上述位置的子目录)将(目前)不会被搜索。有关 .natvis 格式的更多信息,请参阅下面的 推荐阅读

<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
  <Type Name="example_crate_with_natvis::Flags">
      <Expand>
        <Item Name="bits"   ExcludeView="sparse">bits,bb</Item>
        <Item Name="A (1)"  ExcludeView="sparse">(bits &amp; (1 &lt;&lt; 0)) != 0</Item>
        <Item Name="B (2)"  ExcludeView="sparse">(bits &amp; (1 &lt;&lt; 1)) != 0</Item>
        <Item Name="C (4)"  ExcludeView="sparse">(bits &amp; (1 &lt;&lt; 2)) != 0</Item>
      </Expand>
  </Type>
</AutoVisualizer>

通过 build.rs 消费 .natvis 文件 (示例)

将以下内容添加到您的可执行文件的 Cargo.toml 中

[build-dependencies]
natvis-pdbs = "1"

并将以下内容添加到您的 build.rs

fn main() {
    natvis_pdbs::metabuild();
}

通过 metabuild(仅限夜间版本,示例)来消费 .natvis 文件

将以下内容添加到您的可执行文件的 Cargo.toml 中

cargo-features = ["metabuild"]

[package]
metabuild = ["natvis-pdbs"]

[build-dependencies]
natvis-pdbs = "1"

许可证

在以下任一许可证下发布

任选其一。

贡献

除非您明确声明,否则根据 Apache-2.0 许可证定义的,您有意提交并包含在作品中的任何贡献,将按上述方式双许可,无需任何额外条款或条件。

依赖关系

~0.7–1.4MB
~33K SLoC