Repository navigation
enable gdb reverse debugging #2130
Description
Activity
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
pieandcakes commented on Jun 14, 2018
jfg118 Does gdb provide mi support for these features? As Andrew Wang (@WardenGnaw) mentioned above, they will need to be implemented and supported by VS Code in their debug protocol before we can add that functionality.
Andrew Wang (@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
Pierson Lee (@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.
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.
pieandcakes commented on Jun 26, 2018
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.
Checking back, any update on this?
evg-zhabotinsky commented on Jun 6, 2022
For anyone who wants reverse-debugging in VsCode now: Entering this in debug console worked for me:
-exec set exec-direction reverse
After that the normal execution commands work in reverse, including the ones VsCode issues. UI updates correctly too.
When you want to go forward again, use
-exec set exec-direction forward
Checking back, any update on this?
Type: Debugger
Hookup the reverse debugging commands for gdb to the VSCode Debugger Protocol.
i.e. reverse-next, reverse-step, reverse-continue, etc.