natvis-pdbs

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

A [metabuild] / [build.rs] compatible crate to embed .natvis debug visualizer files into your executable's .pdbs, for ease of debugging.

Limitations

Quick Start

To author crates containing .natvis files (example)

Place one or more natvis files inside any of: * the root folder of your crate. * inside the {root}\src folder. * inside a {root}\debug_metadata folder.

Any other locations (including subdirectories of the above) will not (currently) be searched. See Recommended Reading bellow for more information about the .natvis format.

xml <?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>

To consume .natvis files via [build.rs] (example)

Add the following to your executable's Cargo.toml: toml [build-dependencies] natvis-pdbs = "1"

And the following to your [build.rs]: rust fn main() { natvis_pdbs::metabuild(); }

To consume .natvis files via [metabuild] (nightly only, example)

Add the following to your executable's Cargo.toml: ```toml cargo-features = ["metabuild"]

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

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

Recommended Reading

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.