-
Notifications
You must be signed in to change notification settings - Fork 0
Undo v1.26.0 #52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: upstream-v1.26.0
Are you sure you want to change the base?
Undo v1.26.0 #52
Conversation
In Undo, debuggee state is immutable during replay, so reading the G pointer via code injection won't work; and in any case, this approach is simpler.
* Update the documentation to mention UDB or LiveRecorder alongside rr. * Add makefile support for testing the Undo backend. * Add DLV_RECORD_REPLAY_BACKEND environment variable which overrides the record-replay backend, for use in GoLand. * Implement checkpoints as a map from checkpoint number to time. * Suppress resume call after restart. * Implement "when" command using "get_time" serial command. * Implement call injection using "set_debuggee_volatile". * Implement "restart" using "goto_time". * Enable or disable Undo backend appropriately in test cases.
This allows a separate debug symbol file to be specified when replaying a recording with the Undo backend. This can be used to supply debug information when the main binary has been stripped.
The error handling here was a bit painful but only needs doing in these two places (for now).
This is made compatible with UDB's bookmarks by using the UDB bookmark name as the "Note" field in Delve. To save Delve checkpoints, the "Note" must be made unique, so as to be a valid bookmark name in UDB.
Since we added support for a process tree level UUID the `vUDB;get_recording_ids` serial protocol message can return 4 UUIDs. It's easiest to just handle this unconditionally for now, we can clean up the legacy support later.
UDB now saves some additional paths to the session file. We don't do anything with these paths, but we need to be aware of them.
mark-undoio
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some very minor comments.
I take it we didn't need to materially change how our patches work as part of this port? Was there anything unusual required in the rebase?
service/test/integration1_test.go
Outdated
| @@ -0,0 +1,1096 @@ | |||
| package service_test | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we've resurrected a test here because we used to have renaming in it. Possibly it's related to the deprecated (or removed?) RPC protocol version 1.
I suspect we can drop it (thought I'd caught all these before but probably I did not)
service/test/integration1_test.go
Outdated
| @@ -1,1096 +0,0 @@ | |||
| package service_test | |||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
And here we've deleted it! It looks like this is a result of me fixing it up badly last time.
| golang.org/x/exp/constraints | ||
| golang.org/x/exp/maps | ||
| golang.org/x/exp/slices | ||
| # golang.org/x/mod v0.20.0 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did we intend to add these (and their associated license files)?
This pull request represents the differences between upstream Delve v1.26.0, and our fork at the same version. It is for review and not for merge.