swiftlang / vscode-swift

Visual Studio Code Extension for Swift
https://marketplace.visualstudio.com/items?itemName=sswg.swift-lang
Apache License 2.0
760 stars 55 forks source link

Use lldb-dap by default when using Swift 6 #1013

Open plemarquand opened 3 months ago

plemarquand commented 3 months ago

Currently vscode-swift uses the CodeLLDB extension to facilitate debugging with all swift versions. In Swift 6 lldb-dap started shipping in the toolchain. lldb-dap can be used as a replacement, removing the need to use a separate extension to debug.

There is currently a setting to start using lldb-dap available in the settings (swift.debugger.useDebugAdapterFromToolchain). I propose we use lldb-dap by default if the user is using Swift 6, deprecate the existing setting, and add a new one to explicitly enable using CodeLLDB in Swift 6 if users want the current behaviour.

If the user is using a Swift 5.x version the setting would have no effect. Ideally we could hide it if the user is using Swift 5.x but I dont know of a VS Code API to dynamically hide settings.

dschaefer2 commented 3 months ago

The defaults for these settings should just do the right thing: use lldb-dap if they have it or else rely on CodeLLDB.

Also note that CodeLLDB doesn't support Windows ARM so you have to use lldb-dap there.

matthewbastien commented 2 months ago

This is going to have to wait until lldb-dap is close to feature parity with CodeLLDB.

dschaefer2 commented 2 months ago

Yes, boo, but I get it. Need to get there first.

felixf4xu commented 2 weeks ago

There is currently a setting to start using lldb-dap available in the settings

I would like to know which setting in vscode-swift we can set to enable lldb-dap?

I managed to use lldb-dap once, but in that case, I need to install another vscode addon named LLDB DAP from llvm.org, then changed the setting of the lldb-dap addon to point to swift's lldb-dap.exe. I also need to use "type": "lldb-dap" in launch.json. But in the whole process, it's like vscode -> lldb dap addon -> swift's lldb-dap, vscode-swift addon is not involved at all.

plemarquand commented 2 weeks ago

@felixf4xu Its not the most clearly named, but its the VS Code setting "swift.debugger.useDebugAdapterFromToolchain": true.

With that setting you shouldn't need the CodeLLDB or LLDB DAP extensions to debug swift code; the extension will use the lldb-dap included in the Swift toolchain.