Debugging with LLDB-MI on macOS
The debug adapter for theC/C++ extension utilizes the machine interface mode for both gdb and lldb. To use this interface in lldb, the extension utilizeslldb-mi. Thelldb-mi executable was built from the GitHublldb-mi repository and has a dependency on theLLDB.framework, which is part of Xcode.
Prerequisites
Thelldb-mi executable requiresLLDB.framework to run.
How to obtain the LLDB.framework
You can get theLLDB.framework one of two ways.
Xcode:
- Open theApple App Store.
- Search for 'Xcode'.
- Select theXcode application and thenInstall.
Xcode Command Line Tools:
- Open a terminal.
- Run
xcode-select --install. - Confirm the prompt.
Example launch.json
Below is an examplelaunch.json debug configuration entry forlldb:
"configurations": [ { "name":"Launch (lldb)", "type":"cppdbg", "request":"launch", "program":"${workspaceFolder}/a.out", "args": [], "stopAtEntry":false, "cwd":"${workspaceFolder}", "environment": [], "externalConsole":false }]If you get a Developer Tools Access prompt
You may see a dialog saying "Developer Tools Access needs to take control of another process for debugging to continue."

If you get this prompt, you will have to enter your username and password to allow debugging.
If you want to permanently dismiss this prompt, you can run the following command in a terminal:
sudo DevToolsSecurity --enableAdditional configurations
Using an LLDB.framework not installed via Xcode
If you want to use an LLDB.framework that is not installed with Xcode, you need to:
Copy the
lldb-miexecutable in~/.vscode/extensions/ms-vscode.cpptools-<version>/debugAdapters/lldb-mi/binto the folder where theLLDB.frameworkis located.Add the full path of
lldb-mitomiDebuggerPathin yourlaunch.jsonconfiguration.
For example, if you have theLLDB.framework folder located at/Users/default/example/, you would:
Copy
~/.vscode/extensions/ms-vscode.cpptools-<version>/debugAdapters/lldb-mi/bin/lldb-miinto/Users/default/example/.Add the following to your existing configuration:
"miDebuggerPath":"/Users/default/example/lldb-mi"
Using a custom-built lldb-mi
If you built your ownlldb-mi, you can use it by settingmiDebuggerPath to the full path of the executable.