[all-commits] [llvm/llvm-project] 5ab337: [lldb-dap] Add multi-session support with shared d...

Janet Yang via All-commits all-commits at lists.llvm.org
Wed Nov 26 10:32:46 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 5ab3375b2cf461ab02704d129a1f4d5ba1a1e275
      https://github.com/llvm/llvm-project/commit/5ab3375b2cf461ab02704d129a1f4d5ba1a1e275
  Author: Janet Yang <qxy11 at meta.com>
  Date:   2025-11-26 (Wed, 26 Nov 2025)

  Changed paths:
    M lldb/include/lldb/API/SBTarget.h
    M lldb/include/lldb/Target/Target.h
    M lldb/packages/Python/lldbsuite/test/tools/lldb-dap/dap_server.py
    M lldb/source/API/SBTarget.cpp
    M lldb/source/Target/Target.cpp
    M lldb/test/API/tools/lldb-dap/attach/TestDAP_attach.py
    M lldb/test/API/tools/lldb-dap/startDebugging/TestDAP_startDebugging.py
    M lldb/tools/lldb-dap/CMakeLists.txt
    M lldb/tools/lldb-dap/DAP.cpp
    M lldb/tools/lldb-dap/DAP.h
    M lldb/tools/lldb-dap/DAPForward.h
    A lldb/tools/lldb-dap/DAPSessionManager.cpp
    A lldb/tools/lldb-dap/DAPSessionManager.h
    M lldb/tools/lldb-dap/EventHelper.cpp
    M lldb/tools/lldb-dap/EventHelper.h
    M lldb/tools/lldb-dap/Handler/AttachRequestHandler.cpp
    M lldb/tools/lldb-dap/Handler/InitializeRequestHandler.cpp
    M lldb/tools/lldb-dap/Handler/LaunchRequestHandler.cpp
    M lldb/tools/lldb-dap/Protocol/ProtocolRequests.cpp
    M lldb/tools/lldb-dap/Protocol/ProtocolRequests.h
    M lldb/tools/lldb-dap/package.json
    M lldb/tools/lldb-dap/tool/lldb-dap.cpp
    M lldb/unittests/DAP/CMakeLists.txt
    A lldb/unittests/DAP/DAPSessionManagerTest.cpp
    M llvm/utils/gn/secondary/lldb/tools/lldb-dap/BUILD.gn

  Log Message:
  -----------
  [lldb-dap] Add multi-session support with shared debugger instances (#163653)

## Summary:
This change introduces a `DAPSessionManager` to enable multiple DAP
sessions to share debugger instances when needed, for things like child
process debugging and some scripting hooks that create dynamically new
targets.

Changes include:
- Add `DAPSessionManager` singleton to track and coordinate all active DAP
sessions
- Support attaching to an existing target via its globally unique target
ID (targetId parameter)
- Share debugger instances across sessions when new targets are created
dynamically
- Refactor event thread management to allow sharing event threads
between sessions and move event thread and event thread handlers to `EventHelpers`
- Add `eBroadcastBitNewTargetCreated` event to notify when new targets are
created
- Extract session names from target creation events
- Defer debugger initialization from 'initialize' request to
'launch'/'attach' requests. The only time the debugger is used currently
in between its creation in `InitializeRequestHandler` and the `Launch`
or `Attach` requests is during the `TelemetryDispatcher` destruction
call at the end of the `DAP::HandleObject` call, so this is safe.

This enables scenarios when new targets are created dynamically so that
the debug adapter can automatically start a new debug session for the
spawned target while sharing the debugger instance.

## Tests:
The refactoring maintains backward compatibility. All existing DAP test
cases pass.

Also added a few basic unit tests for DAPSessionManager
```
>> ninja DAPTests
>> ./tools/lldb/unittests/DAP/DAPTests
>>./bin/llvm-lit -v ../llvm-project/lldb/test/API/tools/lldb-dap/
```



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list