WinDbg Preview 1.1712.15003 Release Notes

Hi Everyone,

We're here with our last update for this year, it's largely bug fixes, but there's some nice new TTD and JavaScript functionality! Install it from https://aka.ms/windbgpreview

TTD memory queries

You can now query TTD for memory accesses similar to how you query for calls today. This allows you to find all of the reads, writes and execution which access a specific range of memory.

  • Read and write example: dx @$cursession.TTD.Memory(startAddress, endAddress, "rw")
  • Unique execution example: dx @$cursession.TTD.Memory(startAddress, endAddress, "ec")

Settings changes

One of the top requests and complaints right now is the loading and saving of settings, specifically around workspaces. Our initial approach to preserving settings in WinDbg Preview has been very conservative, and we rarely preserves settings from one session to another, and it always requires explicitly loading the workspace.

The first piece of this is in this release. WinDbg Preview will now automatically save settings between sessions, including your symbol path and source path. More will be coming soon like breakpoints and other session specific settings! Keep an eye out for the announcement of the new functionality, and don’t hesitate to send any feedback on the changes you do notice.

Performance improvements

We’re starting to look at the start-up performance, this update has ~20-30% improvement in launch time after the first launch.

JavaScript

  • 64-bit numbers and numerics in JavaScript now contain a modulo method allowing a true 64-bit modulo operation.
  • Objects defined in JavaScript can now implement a custom comparable or equatable notion which will work in dx using standard C++ operators or in LINQ operations. In order to utilize this, the script must declare in the initializeScript array that it supports a new version of the host API by inserting a record “new host.apiVersionSupport(1, 2)”. After you’ve done that you can use these functions in any ‘dx’ or Data Model Window LINQ query.:
    • If the method implements .compareTo(other), it is comparable (comparison operators work in dx and LINQ). If the method returns a negative value, such as “this < other”. If the method returns zero, “this == other”. If the method returns a positive value “this > other”.
    • If the method implements .equals(other), it is equatable (== works in dx and LINQ). The method must return either true or false.

Minor changes and bug fixes

  • Fixed a bug where the stack and locals windows weren’t working during boot debugging
  • Updated the output of LM to more accurately report ProductVersion and similar fields
  • Enabled the “step out back” button during TTD sessions
  • Added support for -lsrcpath
  • The headers in the locals, watch, and model windows now don’t disappear when scrolling down
  • When alt+tabbing back to WinDbg Preview, the command window will properly preserve cursor location
  • Added ctrl+alt+v shortcut for toggling verbose mode
  • You can now disable auto-scrolling of the command window by right-clicking the command window tab and choosing “turn off auto scrolling”
  • You can now debug child processes through the launch executable advanced page.