v0.9.12-alpha
版本发布时间: 2024-10-15 09:02:40
EpicGamesExt/raddebugger最新发布版本:v0.9.13-alpha(2024-10-19 07:55:53)
This release is another substantial one, with several improvements and upgrades to several core debugger systems.
It contains many changes that may impact existing configuration files. If you run into issues or just want a fresh start, it may help to delete your user / project files, although it ideally will still work with old ones.
Like with any large release, a lot of code has changed, and so you may run into new or unexpected issues. If you do, we'd greatly appreciate it if you'd report the issue with as many details as possible. As always, we appreciate your patience, enthusiasm, and willing to give the debugger a try to help it through its alpha phase. Following this release, we plan on doing a larger number of smaller & more focused releases, to focus on usability, reliability, & stability.
Features & Improvements
- The view rule visualizer systems and the other various visualizer systems (those for source code, the memory view, the disassembly view, and more) have been unified; as such, all visualizers can be used with view rules to provide an interface identical to anywhere else they're used in the debugger. The
text
view rule is now identical to a source code view. Thedisasm
view rule is now identical to a disassembly view (but just locked to a specific evaluation). Evaluations with these view rules specified in aWatch
tab can be popped out to standalone tabs. - File paths can now be evaluated (via
file:"C:/foo/bar/baz.txt"
). - A new
memory
view rule has been introduced, which instantiates the hex-viewer memory visualizer for a particular evaluation. This evaluation can include files, meaning this visualizer can be used as a hex-viewer for files. - The debugger now supports native drag + drop, so you can drag + drop files onto the debugger to quickly open them. For executable files, the debugger will also present an extra query to either add the executable as a target, and optionally run or step into it. In all other paths, the debugger will open the most appropriate view rule it has; currently, this just includes the
text
view rule for textual files, andmemory
for anything else, but this will expand in the future. - Custom definitions in the watch window (e.g.
x = 123
) are now supported in all evaluations, and they're no longer locked to being used within a singleWatch
tab. - Auto view rules have been introduced, which automatically associate a given type expression with a view rule. Unless otherwise specified in a given evaluation's view rule, evaluations of that type will use the associated view rule automatically. (#118, #312)
- A new
slice
view rule has been introduced, which attempts to interpret astruct
orclass
as containing a pointer, and an integer encoding the number of elements to which the pointer points, and then visualizes the pointer as pointing to that many elements (as ifarray
was used). - A new
cast
view rule has been introduced, which allows casting of expressions from an evaluation's view rule. - A new
wrap
view rule has been introduced, which allows changing the evaluated expression by containing it within another expression. For example,x
withwrap:{$expr + 5}
applied, will evaluate asx + 5
. - The
only
view rule now defines the order ofstruct
orclass
members as they're visualized, in addition to its old functionality of choosing which members to show. - The debugger now supports evaluations across all loaded modules, with all loaded debug info; you no longer have to select a thread & call stack frame within the module with the debug information with which you want to evaluate. (#185)
- The debugger now supports evaluation of breakpoint state. This is easiest to do by giving your breakpoints a label (this can be done either by right-clicking them, or by editing them in the
Breakpoints
view). These can be used to build dependent breakpoints, as these evaluations can be expressed in breakpoint conditions as well. For instance, I can make the condition of one breakpoint:other_breakpoint.hit_count > 0
. This condition, in particular, will not incur the usual target runtime performance costs of conditional breakpoints. - Similar to breakpoints, the debugger now supports evaluation of thread state. This is not yet supported in conditional breakpoints, but it will be soon. These evaluations can be placed in a
Watch
window though. - All watch-style tabs can be evaluated as watch expressions.
Locals
can be reproduced in theWatch
tab by evaluating thelocals
expression.Registers
can be reproduced by evaluating theregisters
expression.Globals
, viaglobals
,Types
, viatypes
,Procedures
, viaprocedures
, and so on. This allows all of these collections to be fuzzy-searched together. - The debugger now supports evaluations of small (64 bytes or less, currently) string literals, and equality/inequality comparisons between them. These can be used in conditional breakpoint expressions as well. (#213)
-
typeof
is now supported in evaluations. - The debugger has switched to using the Zydis disassembler library, which contains better correctness & support for newer x86 instructions and extensions. (#259, #169)
- The autocompletion lister has been greatly improved, supporting the autocompletion of globals, procedures, types, file paths (when relevant), and more.
- The debugger UI now supports modification of multiple keybindings per command.
- A new
Toggle Watch Expression At Mouse
command has been added. - The
Output
view now automatically scrolls to the bottom. This is not configurable yet. - A new
bring_to_front
command has been introduced; it can be used via IPC. (#326) - The debugger's text rendering has been improved to improve smoothness and anti-aliasing when appropriate. This can be configured in
Settings
. - The debugger now correctly supports textual hotkeys. If text is not being inserted in the UI anywhere, then textual keys (like
n
ors
orr
) can be used for commands.
Fixes
- The debugger now correctly evaluates AVX-512 register evaluation. (#290)
- The debugger has a small fix covering a number of unwinding edge cases, which may improve call stack quality. (#313)
- Ternary operators in evaluations have been fixed.
- The debugger evaluation visualization systems have been largely rewritten to improve their robustness, correctness, and feature coverage. This eliminates/reduces cases where, previously, view rules would not be applied correctly.
- A bug was fixed where font paths specified in configuration files would be doubly-escaped, leading to exponential (!) growth of configuration files. Sorry about that one!
- The debugger now un-minimizes and regains focus when encountering an exception or interruption.
- The
Output
view flickering has been fixed. (#278) - The
Breakpoints
view, as well as all other similar views, now support multi-selection, reordering, deletion via the Delete key, and other keyboard shortcuts (as they have been largely deduplicated withWatch
orWatch
-like views). These should now all behave in a less idiosyncratic way. - Many other small fixes and improvements.
1、 raddbg.zip 14.2MB