RemedyBG 0.3.6.0

A new version of RemedyBG, 0.3.6.0, is now available for immediate download. Changes include:

New Features
* Evaluate on hover. Can set the tooltip delay in Windows>Style and can optionally disable this feature altogether.
* A stack-overflow exception will now collapse repeated frames and show "Collapsed N frames" in the Call Stack pane. Can double-click collapsed frame or toggle this behavior via "Collapse Repeated Frames" context menu item.
* Adds "Format As" menu item showing relevant format specifiers for the selected watch(s).
* Added $err pseudo-variable for the last error value set by SetLastError for the current thread
* Added $handles pseudo-variable which shows the number of handles allocated by the process
* Added $tid and $pid pseudo-variables for thread and process IDs
* Added ",d" decimal format specifier
* Added ",hr" format specifier for displaying an HRESULT or Win32 error code
* Adds process ID (optionally) to status text. Can be toggle via status text's context menu.
* Information about module load/unload events and thread exit codes are now written to the Output window
* Added "Read Only" checkbox to memory window's options
* Added "Copy Address" to memory window's context menu
* Allow breakpoint on either nominal entry point (WinMain, main, etc...) or entry point as defined in the PE header.
* Can now run to a filename/line via the command line driver (see run-to-cursor in documentation)

Improvements
* Lazily load function table entries. This helps improve performance when stepping over calls that load many DLLs (e.g., Direct3D initialization).
* Use high-contrast color for collapsed panes to make them easier to find.
* Adds error message when trying to index non-array/pointer type.
* Properly handle device removed scenarios (Direct3D).
* Line numbers have been added back to the call stack display.
* Render the frame rather than show black while resizing.
* Implements PgUp/PgDown in panes (previous these keys mapped to what is Home/End now)
* Added binary formatting of enum values
* We now alphabetically sort text file names in the drop-down menu.
* Adds Ctrl+C hotkey to Output Window to copy contents to clipboard
* Rearranged menu in Output Window so "Clear" is less likely to be accidently clicked.
* Adjusted vertical position of lock icon in embedded font
* Added more descriptive error message in the case CreateProcess fails
* No longer count disable processor BPs against total number use
* Adds "Move Up / Move Down" menu items in watch window to aid discoverability of this existing feature.
* Show arrow next to processor breakpoint that was hit.
* Run-to-cursor operation will now show yellow breakpoint symbol in text/disassembly
* No longer initiate editing of address in memory window if a cell is being edited.
* Double-click, not single-click, now used to initiate memory window editing.
* An error in a breakpoint's condition is now more clearly presented.
* Allow adding a breakpoint at an address without having to open/navigate to the address in the disassembly window.

Bug Fixes
* Fixed lookups of static, global TLS variables.
* Fixes the case in which a breakpoint is added on the same line as the run-to-cursor location before the run-to-cursor operation completes.
* String summaries are now culled to 64-chars for non-nested previews and 32-chars otherwise.
* Addressed problems where double-clicks were not registering on certain touchpads.
* Fixed a problem where the corresponding text window would not be brought to the front when stepping through disassembly.
* Fixed a case where the session would be considered modified immediately after opening.
* Fixes a problem where keyboard input was ignored in the auto-created watch expression in certain situations.
* Now properly sign-extend bitfield values.
* Fixed the editing of bitfield values in watch.
* An exception is now considered "handled" after using set-next-statement
* Fixed so that Ctrl+Alt+W no longer deletes a watch expression when changing focus to another watch window.
* Modifying condition on an existing processor breakpoint was broke in previous release. This has been fixed.
* Fixed dereferencing union type when using '.' rather than '->'
* Left arrow was unintentionally changing to focus to last row in some cases. This has been fixed.
* Fixed reported case where cursor position on ASM source goes to PROC declaration rather than first instruction.
* Fixed problem terminating app when breakpoint present in multithread code.
* Fixed bug when run-to-cursor is executed on the same line
* Fixed hang adding a function breakpoint to a module containing only a single function.
* Fix for memory window so navigate to an address occurs even when reevaluation of an expression is identical to the previous address.

Edited by x13pixels on Reason: typo in post title
Enormous QOL improvements here. Thanks so much!
Thanks for the update.
Awesome update. Having the hover ability is definitely a quality of life improvement. Thank you!

Jesse, Simon, and Jason: you're welcome!

A follow up release with some additional bug fixes is now available for download as 0.3.6.1.

  • Fixes potential crash in stack walk code introduced in 3.6.0 (The Sandvich Maker)
  • Evaluate on hover will now consider array indexing when picking the expression to evaluate (datamite)
  • Fixes conditional breakpoints added at program startup (datamite)
  • AltGR+[^A-Z] can now be used to initiate an edit in the watch window (seventh-chord)
  • Fixed expression generated for Add Watch / Send to Memory Window for dereferenced pointers (JensWallgren)

Thank you so much for this update! Although there is one thing added in it that I would like to be able to turn off which is:

  • Information about module load/unload events and thread exit codes are now written to the Output window

This causes a huge amount of module load and thread exit spam in my win32/dx11 application which I would like to be able to turn off.

Potato: I considered this oversight a bug and went ahead and put out a patch to address it. The new release is available as 0.3.6.2 and contains options, accessible from the Output window's context menu, for toggling the display of module load/unload, thread exit, and process exit messages.

Thanks


Replying to Potato (#25105)

A small patch release with a few new features snuck in is now available for download (0.3.6.3).

New Features

  • Added "-g" and "-q" command-line arguments which can be used to automatically launch target application and terminate RemedyBG. @matias^
  • Added remove-all-breakpoints to command-line driver. @cancel

Improvements

  • Replaced Ctrl+Alt+* keyboard shortcuts to eliminate problems with international keyboard layouts. Ctrl+Alt+[0-9], used to switch saved layouts, is now simply Ctrl+[0-9]. Replaced keyboard shortcuts for changing window focus to use chorded "Ctrl+L, Ctrl+*" combos, instead.
  • User mode DEP violation at 0x0 will now show location of exception in text window. @greensleevless

Bug Fixes

  • Fixed a case where consecutive line numbers in symbol information, as emitted by Clang but not MSVC, required multiple step-over operations. @EladCiuraru
  • Better handling for invalid/corrupt line information in PDBs. @Zilarrezko
  • Fixes case where output window is not scrolled properly when the window is not active.
  • Fixed hidden windows showing up in tab bars after reloading a layout in certain cases.