Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Natvis visualizations for the some widestring types #29

Merged
merged 1 commit into from
Aug 29, 2022

Conversation

ridwanabdillahi
Copy link

@ridwanabdillahi ridwanabdillahi commented Aug 26, 2022

This change adds Natvis visualizations for some types defined in the widestring crate to help improve the debugging experience on Windows.

Debugging types such as the U16String type under a Windows debugger, (WinDbg or the Visual Studio debugger), the actual string is not shown at first glance. This takes digging through the internal type and enforcing conversions to see the actual data. The Rust compiler does have Natvis support for some types, but this is limited to some of the core libraries and not supported for external crates.

rust-lang/rfcs#3191 proposes adding support for embedding debugging visualizations such as Natvis in a Rust crate. This RFC has been approved, merged and implemented.

Natvis is a framework that can be used to specify how types should be viewed under a supported debugger, such as the Windows debugger (WinDbg) and the Visual Studio debugger.

This PR adds:

  • Natvis visualizations for core types in the widestring crate such as types defined in the ucstring, ustring and utfstring modules.

  • Tests for testing visualizers embedded in the widestring crate.

  • Updates to the CI pipeline to ensure tests for visualizers are run so they do not break silently.

  • Updates to the Makefile.toml to enable debuginfo when running debugger_visualizer tests since they will need debugging info and symbols to be present.

  • A new debugger_visualizer feature for the widestring crate to enable the unstable debugger_visualizer feature.

Add tests for Natvis definitions and add a new crate feature to enable.

Add a README file for how to write and embed Natvis files also how to run debugger visualier tests.
@starkat99 starkat99 merged commit 049a6c5 into starkat99:main Aug 29, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants