Changes since 0.18 (rather long list, the releases has not been published here as files between then and now):
The old implmentation that relied on GDB/MI and gdb-js has now been removed entirely. The extension now solely relies on it's custom DAP implementation that we let GDB source and spawn.
Features
- Added
ignoreStandardLibrary
to launch and attach configurations. It will attempt at ignoring most c++ standard library files while stepping. It's a best approximation approach. Defaults totrue
. - Extended support for the debugger backend "midas" which henceforth will be known as "midas-native"
- Added context menu support for call stack, to resume/pause all threads
- Make use of onActive item events so that the debugger backends can know what threads the user is inspecting in the UI
- Added continueAll
- Added pauseAll
- continueAll/pauseAll is used for gdb's allStopMode, or MDB.
- Deprecated allStopMode in launch.json; use noSingleThreadControl instead. It's a better name and will
be also what this feature eventually be called by MDB. - ${workspaceFolder} and built-ins in launch.json, should now work for all sorts of config field values
- Added new pretty printer features.
- Support for using the canonical experimental debugger
mdb
- Added prettier to dev dependencies. use
npm run format
to format - Added
(Return Value)
variable toLocals
, if the last command that executed wasstepOut
and it succeeded completely.
This way you can inspect return values from a function. - Added
LogPoint
breakpoints that logs to the debug console and continues. - Added run to event
- Midas now uses the output from
rr gdbinit
directly to increase stability so that if RR changes it, we don't break. - Added Checkpoint UI for RR sessions. The snapshot (camera icon) sets a checkpoint. And there will be a
Checkpoint
panel in the side bar during debugging from where the user can (re)start a checkpoint. - New DAP interpreter. This have introduced breaking changes to the configuration of Midas. Unless you're new, you should read the readme. This change is a substantial overhaul and is supposed to make Midas more stable and performant.
- Added
rrOptions
tolaunch.json
formidas-rr
debug sessions, which are command line options passed to RR. - Added ability to name checkpoints
Fixes
- Pretty printer-usage bug fix
- Fixed bug where frame arguments weren't displayed properly
- Fixed a bug where typedefs weren't recognized as the base type and as such wouldn't use pretty printers
- Fixed a bug where RR did not get spawned correctly, not being able to replay fork-without-execs.
- Fixes
when
, and other RR commands "crashing" Midas. - Fixes ##188 where Midas couldn't be started because RR was recording.
- Make checkpoints in UI clickable to go-to source where they're set
- Added connect timeout & remote timeout to 10000 for all attach
- Fix the Get RR bug where it did not fire if the Midas config file gets into an invalid state, possibly by aborting a build etc.
- Fixed bug that made
Add to watch
disappear for member objects in theVariables
list. You can now right click things
in the list and add sub objects toWatch
again. - Removed old Midas version that relied on GDB/MI and gdb-js. The exclusively supported variant is midas DAP implementation.
- Make validation of config happen after substition of variables like ${workspaceFolder} so that any configuration items can use the short-hands/built ins
- Refactors and cleaning up the inherent messiness of supporting what essentially is 3 backends; midas-native (mdb, future hopefully mdb+rr), midas-gdb (gdb) and midas-rr (gdb+rr).
- Added program args as a configuration item for launched program when
use-dap
is true, which seems to have been missing - Build RR related bugs fixed
- Pretty printer related issues fixed
- Fixes to UI to behave more consistent.
- Refactor of tool management, so that it can be extended to additional software like GDB as well (in the future) in-house debugger, caused Midas to ask every time for updates of tools even when having updated to last version. Fixed.
- Fixed hex-formatting bug for register values with the sign bit set.
- Greatly improved stability and reliability of disassembly outputs
- Fixed bug in InstructionBreakpoint requests