This release contains many smaller fixes and features for both the debugger and linker. A number of major upgrades are coming to the debugger in 0.9.16, but they'll take a bit more time; this release just contains many stability and usability improvements since 0.9.14.
Debugger Changes
- Changed string visualization to respect array sizes in an evaluation's type, making the
slice
view rule more useful for strings. - Adjusted value committing rules in watch windows, to immediately commit values when editing debugger configuration (while still retaining the ability to escape and retain the old value). This fixes user experience issues where edits to things like breakpoints or targets were not being immediately recognized by the debugger (as they were not explicitly committed by the user).
- Introduced better support for an edge case in PDB generation, where a variable which was used as a return value would not have type information explicitly attached in the debug information.
- Fixed a bug which was causing the memory view to be truncated to 16 KB with active processes. (#375)
- Fixed a case where files were spuriously being displayed as out-of-date.
- Fixed artifacts relating to custom window border during resizes.
- Fixed window fullscreen and placement bugs relating to the custom window border.
- Fixed bug where panels would disappear if the window was minimized or sufficiently shrunk. (#385, #401)
- Fixed a bug in inline line information parsing, which caused breakpoint traps to be placed at an invalid instruction addresses when placed in inline sites, generally in release builds.
- Fixed some cases where spurious exceptions were being generated, due to "spoofs" (bogus return addresses the debugger writes into a call stack, in order to step over potentially-recursive calls).
- Fixed a bug where the debugger would freeze when editing certain expressions. (#362)
- Fixed a crash with assembly-style register offset dereference evaluations (e.g.
[rdx+0x40]
). (#378) - Fixed a hang when entering long strings for target or breakpoint information. (#387)
- Fixed a crash in the debug info fuzzy searching system. (#363)
- Fixed a crash or invalid state case when a debug info tab (e.g.
Types
,Procedures
) was visible upon starting a debugging session. (#420)
Linker Changes
- Fixed a crash when linking against same DLL statically and dynamically.
- Fixed a bug in global symbol table sorter which prevented debugger from looking up certain symbols.
- Reduced overall memory usage.
- Added support for /FUNCTIONPADMIN.
- Fixed a crash when emitting base relocations for 32-bit pointers.
- Added /RAD_SHARED_THREAD_POOL which tells linker to use a shared semaphore to utilize better system resources when spawning many linker instances at the same time.
- Added /RAD_WRITE_TEMP_FILES to prevent leaving corrupted files on disk when linker is terminated mid write, files are renamed after all writes successfully finish.