Summary
The post-handshake breakpoint re-sync on a launch (src/session/launch/debug-launcher.ts:417, this.breakpoints.resyncAll(finalSession)) never passes forceFreshEcho, while the attach path does (src/session/attach/attach-controller.ts:296, resyncAll(session, { forceFreshEcho: true })).
forceFreshEcho exists because js-debug answers a setBreakpoints whose set did not change with { breakpoints: [] } (issue #500); ChildSessionManager.storeBreakpoints clears and re-sets the path so the child answers with real per-breakpoint state. Without it the launch re-sync gets the empty echo from the child and the parent's permanent "Unbound breakpoint" stub, and heals nothing — every launch DAP trace shows the re-send answered [] (for example session 2b52305f in #699).
Today the store is usually stamped by the worker's breakpoints_synced status and by the child's breakpoint events, so this is a belt-and-braces path that cannot help; either pass forceFreshEcho: true on launch as attach does, or drop the launch re-sync and say so in the comment.
Refs #500, #439, #673.
Summary
The post-handshake breakpoint re-sync on a launch (
src/session/launch/debug-launcher.ts:417,this.breakpoints.resyncAll(finalSession)) never passesforceFreshEcho, while the attach path does (src/session/attach/attach-controller.ts:296,resyncAll(session, { forceFreshEcho: true })).forceFreshEchoexists because js-debug answers asetBreakpointswhose set did not change with{ breakpoints: [] }(issue #500);ChildSessionManager.storeBreakpointsclears and re-sets the path so the child answers with real per-breakpoint state. Without it the launch re-sync gets the empty echo from the child and the parent's permanent "Unbound breakpoint" stub, and heals nothing — every launch DAP trace shows the re-send answered[](for example session2b52305fin #699).Today the store is usually stamped by the worker's
breakpoints_syncedstatus and by the child'sbreakpointevents, so this is a belt-and-braces path that cannot help; either passforceFreshEcho: trueon launch as attach does, or drop the launch re-sync and say so in the comment.Refs #500, #439, #673.