Skip to content

The RAD Debugger v0.9.9-alpha

Compare
Choose a tag to compare
@ryanfleury ryanfleury released this 29 Mar 22:01
· 224 commits to master since this release

This release consists of a lot of behind-the-scenes work, primarily focused on improving the PDB -> RADDBGI conversion speed for larger projects, and cleaning up and simplifying many lower level debugger systems, to have a more solid foundation for further features and improvements moving forward.

Before this release, the PDB -> RADDBGI conversion process was completely single-threaded, and was not usable for large PDBs, and especially not in projects with several large PDBs. There are still plenty of performance improvements on the table, and we expect this to continue to improve, but this release already includes some major improvements. With our 8GB test PDB (the largest that we currently have), on a 64-core development workstation, conversion time decreased from ~11 minutes to ~30 seconds with the changes in this release. This should massively improve the debugger's usability in many cases where it was previously not usable.

As a result of the above progress, as well as all of the aforementioned work on the lower level debugger systems, a lot of code was either majorly changed or rewritten. If you experience new issues with this release that you didn't experience with older versions, it'd help out a lot if you let us know by submitting an issue.

EDIT: The new PDB -> RADDBGI converter had introduced some regressions, mostly related to C++ feature support. I've since fixed these. Since these are small fixes, but quite important for regular debugger usage for many people, I wanted to package up a new build with these fixes included. That being said, I didn't think these fixes alone justified an entirely new release with a new version number. So I've uploaded an updated build under raddbg.zip. The original build has been renamed to raddbg_0.9.9a.zip.

A more comprehensive list of the major improvements and fixes follows:

Features & Improvements

  • Major pass over the PDB -> RADDBGI converter to improve memory usage and performance, particularly with very large PDBs. (#145)
  • The Disassembly view now works for dynamically allocated and generated code, and correctly hot-reloads as the underlying memory changes. (#106)
  • The debugger now supports evaluating and visualizing bitfields. (#54)
  • The source and disassembly views now support double-click to select by token, and triple-click to select by line. (#81, #45).
  • The Disassembly view now correctly supports keyboard navigation, copy/paste, and the toggle-watch-expression-at-cursor command.
  • Syntax highlighting and basic hover-evaluation support for the Odin language.
  • Middle click now closes tabs. (#88)
  • More visible & more informative exception visualization.
  • Support for address and code byte toggling in Disassembly views.

Fixes

  • Fixed a crash when changes in a Watch view were committed when the selected row was not visible. (#133, #174, #176)
  • Fixed several process control and caching issues in the debugger's backend, eliminating several evaluation and usability issues.
  • Fixed a crash when viewing more complex Unicode strings in Watch views. (#165)
  • Fixed crashes in the evaluation expression parser, relating to incomplete/malformed expressions. (#155)
  • Fixed some issues with PDB line info parsing, which caused line info to "disappear" midway through a function. (#138)
  • Fixed the debugger's incorrect interpretation of UTF-16 and UTF-32 strings as UTF-8, causing incorrect visualization. (#180)
  • Fixed the debugger backend hanging when encountering uncaught exceptions, when those exceptions were specified to be filtered on first-chance encounters. (#151)
  • Fixed parsing of C++ digit separators. (#173)
  • Fixed the debugger being unable to correctly locate debug info because of differences in case-sensitivity in various usages of a path.
  • Fixed the frontend's input event consumption to be more correct and robust. (#91)