Type: Debugger
Hookup the reverse debugging commands for gdb to the VSCode Debugger Protocol.
i.e. reverse-next, reverse-step, reverse-continue, etc.
You will want to make a request to the VSCode Protocol at their GitHub issue page at https://github.com/Microsoft/vscode-debugadapter-node/issues
@jfg118 Does gdb provide mi support for these features? As @WardenGnaw mentioned above, they will need to be implemented and supported by VS Code in their debug protocol before we can add that functionality.
@WardenGnaw the VSCode Protocol supports the "Back" functionality.
https://github.com/Microsoft/vscode-debugadapter-node/blob/master/protocol/src/debugProtocol.ts
i.e. StepBack, ReverseContinue, etc. The capabilities need to specify supportsStepBack := true
@pieandcakes gdb-mi it supports the reverse commands through specify -reverse argument to the normal step , next, commands, as well as setting the debug direction.
https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Program-Execution.html#GDB_002fMI-Program-Execution
During the start of GDB/LLDB. This will also need to run -list-target-features and validate that ‘reverse’ is in the result list.
In order to run the commands, users will need to run -exec console "target record-full" from the debug console in order for the commands to work. Enabling this at the start will be slow for larger programs, and if users do want this they can insert it into the setupCommand section.
The "target record-full" would be something that has to be manual as there doesn't seem to be a way to specify it from VS Code's UI
Another hurdle will be that -list-target-features command isn't runnable until the target is set in gdb which might be after the capabilities has been returned.
Perhaps a general option in the Debug Configuration to "Enable Reverse Debugging at startup" with a note that it Requires Reverse GDB.
This would allow the user to have different Debug Configurations, some with reverse debugging enabled and others without.
Perhaps a general option in the Debug Configuration to "Enable Reverse Debugging at startup" with a note that it Requires Reverse GDB.
There are too many options for reverse debugging in gdb alone: https://sourceware.org/gdb/onlinedocs/gdb/Process-Record-and-Replay.html
And you probably want https://rr-project.org/ instead anyway since it's way faster.
It needs to be done in setupCommands.
Another hurdle will be that -list-target-features command isn't runnable until the target is set in gdb which might be after the capabilities has been returned.
This is indeed a fundamental problem. https://microsoft.github.io/debug-adapter-protocol/specification#Requests_Launch comes after initialization.
But if you try to execute a reverse step without checking it will simply fail:
`-exec-finish --reverse
+reverse-finish&
result-class: error
msg: Target multi-thread does not support this command.
Btw when manually running gdb commands like finish or step the UI doesn't get notified of the new $pc.
Hi, any status update ?
Still in review.
Most helpful comment
@WardenGnaw the VSCode Protocol supports the "Back" functionality.
https://github.com/Microsoft/vscode-debugadapter-node/blob/master/protocol/src/debugProtocol.ts
i.e. StepBack, ReverseContinue, etc. The capabilities need to specify supportsStepBack := true
@pieandcakes gdb-mi it supports the reverse commands through specify -reverse argument to the normal step , next, commands, as well as setting the debug direction.
https://sourceware.org/gdb/onlinedocs/gdb/GDB_002fMI-Program-Execution.html#GDB_002fMI-Program-Execution