Skip to content

launch re-sync never passes forceFreshEcho, so js-debug's no-change echo leaves it a no-op (attach does) #705

Description

@debugmcpdev

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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions