Repository navigation
fix(xdebug): keep a breakpoint_resolved that beats its breakpoint_set reply - #402
Merged
Merged
Conversation
… reply Xdebug sends breakpoint_resolved for a loaded file together with the breakpoint_set reply; the sync learns the engine id only after the reply, so the notify found no breakpoint and was lost (no resolved_line, no breakpoint.resolved event). Unmatched notifies of a session driven here are kept by engine id and applied in setBP. breakpoint_list read while paused also moves an unresolved breakpoint to resolved.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Xdebug sends
breakpoint_resolvedfor an already loaded file together with thebreakpoint_setreply. The breakpoint sync learns the engine id only after that reply returns, so the notify matched no breakpoint and was dropped: noresolved_line, no WSbreakpoint.resolvedevent.breakpoint_resolvednotifies of a session driven by Buggregator are kept per session by engine id (Session.bpEarly, capped at 1000) and applied insetBPonce the id is known; the event is emitted then.breakpoint_listread while paused now moves a breakpoint reportedresolved="resolved"from unresolved to resolved (xResponse.Breakpoints.Resolved).Tests
TestBreakpoints_ResolvedNotifyWithSetReply— fake engine sends the notify before and after the set reply (×10 each).TestBreakpoints_ListResolves— resolved state taken frombreakpoint_list.TestMCPBreakpointToolsexpectation is nowresolved.go test -race -count=1 ./modules/xdebug/ok;-run Breakpoint -count=10ok.Made with harnsy