There's an input loop thread which reads and parses command lines and
the infrastructure for registering and executing commands. Currently
only "help" and "quit" commands are implemented.
- When a job needs to go dependent on another job, we no longer use recursion
to manage the execution stack. Instead the job is simply marked as waiting
and we execute other jobs with no dependencies in the meantime. When a job
completes, all dependents are moved back onto the unscheduled list and
executed as needed.
- Adjustments to ResolveValueNodeJob to handle the now asynchronous nature
of waiting.
- If the node we're looking at is a compound node, retrieve its location
and show that as the value with an indicator to clarify that it's an object.
- Minor tweaks to tooltip format.
- Style cleanups.
- When resolving its value, CStringValueNode now sets its node child's
address to the address of the string buffer rather than the location of
the originating pointer, which allows things like Inspect to pick that up.
- TableCellContextMenuTracker now supports menus that don't have a settings
submenu, since some variables won't have renderer settings but will still
have context actions.
- Add _GetContextActionsForNode() to retrieve the list of contextual actions
available for a given model node. Currently this is only adds an action
to inspect the memory address of the highlighted value, but will be extended
for other actions later.
- If we're asked to generate an entry for a tag we don't recognize,
return an error so don't then attempt to add a null/invalid entry into the
compilation unit's entry list and later crash dereferencing it.
- When asking for signed/unsigned, IntegerFormatter was previously
treating all value types as int64, which would result in much larger
than expected values in the variable list in some cases. Inspect the actual
integer type of the variable and adjust the format string accordingly in
order to deal with that.
- When binary searching functions in the source entry list,
comparing by name and location alone isn't sufficient, since
templates will match those for different instances, Fixes a crash on
exit where the wrong function would get removed from the list, while
the one we actually wanted to remove was still in the list, but then
had its source code cleared. This would later crash the comparison
function due to not being able to get its source location.
- When an image was unloaded, its corresponding image info was never
removed from TeamDebugInfo's list, leading to the latter containing
a deleted object, resulting in various random crashes.
- When attempting to unwind the call frame, we now search for the appropriate
FDE in both .debug_frame and .eh_frame. This mirrors gdb's behavior and
works around the ever-changing whims of the gcc developers as to which
section the requisite FDE/CIE resides in.
- The buffer that the debugger used to retrieve messages from
the debug port was slightly too small for the largest of the message
data structs (currently 1100 bytes), causing some types of debug events
to get truncated. This resulted in image creation/deletion events being
received with a truncated image_info struct, which would result in several
fields being returned with random values, most notably the text/data base
and size fields. Consequently, searching those images for an address within
them would fail, leading to #8709. It's possible but not yet confirmed
that this bug is also responsible for #8710, need to test further.