WinDbg Preview 1.1804.18003.0 Release Notes

Hey everyone!

It's been a while since our last big update, but we have quite a few things to share in the latest version of WinDbg Preview that should be rolling out shortly!

Symbol status and cancellation

Every once in a while WinDbg will sit saying it’s *BUSY* loading symbols and it’s difficult to determine what it’s doing and why without !sym noisy enabled. We’ve updated WinDbg Preview to have some better communication around what it’s doing when loading symbols to help troubleshoot any issues.

In addition to easily seeing exactly what’s happening, we’ve made some changes that should make cancelling symbols more reliable and the Logs window will contain some of the details that’s normally output when !sym noisy is enabled. If you hit View -> Logs you’ll get the full noisy symbol loading output without having to turn it on and attempt to reload the symbols.

Experimental notes window

WinDbg Preview now has a window for taking notes. Just hit View -> “Notes” to open it. Right now it’s pretty barebones, but if you copy/paste into it, DML links will be preserved and still work as if it was the command window. You can also save and load notes files from the “Notes” ribbon when the window is open. Try it out and let us know what you think!

Experimental faster source window

We’ve had a lot of feedback around the performance of WinDbg Preview being a bit slower and more resource-intensive than WinDbg. One of the key contributors is the source window control we’ve been using. We’ve added an experimental new source window that is quite a bit more efficient. There’s still a few gaps around context menus and syntax highlighting, but we want to give everyone the option of trying it out before it’s finished to give us early feedback.

Just run $UseFastSourceWindow to use it. If you want to go back to the old one, run $UseMonacoSourceWindow. The setting will preserve across sessions, you will need to close and re-open source windows to get the new version.

JSProvider API version 1.2

For JavaScript extensions that declare support for API version 1.2:

  • Any object with a .compareTo method which exits the script will have a custom comparator on it (comparison operators will work in the DX evaluator and elsewhere: e.g.: IModelObject::Compare)
  • Any object with a .equals method which exits the script will have a custom equality operator on it (== and != will work in the DX evaluator and elsewhere: e.g.: IModelObject::IsEqualTo)
  • Native or data model objects which enter the script will have .compareTo and .equals on them which allow access to any custom comparator or custom equality implementations

Minor changes and bug fixes

  • .server will now list fully qualified domain name for easier use when there’s domain issues around short names.
  • Ctrl+G now works in the source window.
  • Added address bar to the disassembly window.
  • WinDbg Preview will now handle _NT_SYMBOL_PATH in a more expected way.
  • Added -server command-line option.
  • TTD data model queries can now be displayed progressively, so if you interrupt it you’ll still see some results. This is still experimental, so you can run “dx @$cursession.TTD.AsyncQueryEnabled = 1” to enable it.
  • The ‘dps’ command now has links to the source files it refers to.

There's quite a few other changes and fixes under the hood that I might've missed here given it's been a while since our last release. As always, feel free to comment or send feedback to the Feedback Hub if you have any issues!

-Andy