Commit graph

16 commits

Author SHA1 Message Date
Wesley Wiser
f353cbf1a1 Generate better debuginfo for directly tagged enums 2021-06-02 10:23:09 -04:00
Markus Westerlind
81c9a02018 Update HashSet natvis 2021-03-17 10:07:09 +01:00
Markus Westerlind
7cf8d3ac2b feat: Update hashbrown to instantiate less llvm IR
Includes https://github.com/rust-lang/hashbrown/pull/204 and https://github.com/rust-lang/hashbrown/pull/205 (not yet merged) which both server to reduce the amount of IR generated for hashmaps.

Inspired by the llvm-lines data gathered in https://github.com/rust-lang/rust/pull/76680
2021-03-16 11:20:26 +01:00
Ryan Levick
920e2d8248 Add natvis for Result, NonNull, CString, CStr, and Cow 2021-03-01 10:57:36 +01:00
Arlie Davis
2f584229d4 Improvements to NatVis support
NatVis files describe how to display types in some Windows debuggers,
such as Visual Studio, WinDbg, and VS Code.

This commit makes several improvements:

* Adds visualizers for Rc<T>, Weak<T>, and Arc<T>.

* Changes [size] to [len], for consistency with the Rust API.
  Visualizers often use [size] to mirror the size() method on C++ STL
  collections.

* Several visualizers used the PVOID and ULONG typedefs. These are part
  of the Windows API; they are not guaranteed to always be defined in a
  pure Rust DLL/EXE. I converted PVOID to `void*` and `ULONG` to
  `unsigned long`.

* Cosmetic change: Removed {} braces around the visualized display
  for `Option` types. They now display simply as `Some(value)` or
  `None`, which reflects what is written in source code.

* The visualizer for `alloc::string::String` makes assumptions about
  the layout of `String` (it casts `String*` to another type), rather
  than using symbolic expressions. This commit changes the visualizer
  so that it simply uses symbolic expressions to access the string
  data and string length.
2020-12-28 12:14:49 -08:00
Matt Brubeck
ebd15e790a Implement HashSet in terms of hashbrown::HashSet 2020-09-08 17:24:23 -07:00
MaulingMonkey
5acd272f5f Fix HashMap visualizers in Visual Studio (Code)
CDB doesn't care that you're using static_cast between unrelated types.
VS(C) does.  These should've been reinterpret_cast or C casts.
Cast is from e.g. `u8*` to `tuple<$T1, $T2>*`
2020-09-05 14:50:03 -07:00
MaulingMonkey
122c03745e Handle new HashMap layout in CDB, MSVC, WinDbg, etc. 2020-08-07 07:03:15 +01:00
MaulingMonkey
f8eb81ba4e Modify type names on MSVC to make tuples .natvis compatible.
- Mangles (T0, T1) as tuple<T0, T1>, possibly unblocking rust-lang/rust#70052 "Update hashbrown to 0.8.0"
- Prettifies Rust tuples similar to VS2017's std::tuple
- Improves debuginfo test coverage
2020-06-24 19:28:12 -07:00
MaulingMonkey
839d58ca56 debuginfo: Support for std::collections::Hash* in windows debuggers. 2019-11-20 19:27:42 -08:00
MaulingMonkey
7c55b48d31 Fix .natvis visualizers.
Updated to handle these changes:
  - `core::ptr::*` lost their `__0` elements and are just plain pointers
  - `core::ptr::*` probably shouldn't dereference in `DisplayString` s
  - `VecDeque` and `Vec` use `core::ptr::*` s
  - `VecDeque` and `LinkedList` moved modules again.

Retested - still working fine, left alone:
  - `String`, `&str`, `Option`
2019-05-09 16:15:43 -07:00
MaulingMonkey
90a7cac8c8 *.natvis: Use s8 postfixes to correctly interpret rust strings as UTF-8. 2017-07-21 03:39:56 -07:00
MaulingMonkey
8e10c4d55d Modify type names on MSVC to make strings and slices .natvis compatible. 2017-07-13 10:04:43 -07:00
Murarth
eadda7665e Merge crate collections into alloc 2017-06-13 23:37:34 -07:00
Diggory Blake
1528cbefdb Remove non-breaking spaces 2017-04-17 17:49:35 +01:00
Andrew Gaspar
a8b7b28bab Vec, LinkedList, VecDeque, String, and Option NatVis visualizations 2017-02-15 01:51:19 -08:00