Visual Studio Code LLDB on macOS error when starting debugging session
Asked Answered
S

4

28

I'm trying to configure Visual Studio Code for compiling/debugging C++ programs on macOS. I am using the following launch.json file:

Enter image description here

When I try and start a debugging session, I get the following error:

Warning: Debuggee TargetArchitecture not detected, assuming x86_64.
ERROR: Unable to start debugging. Unexpected LLDB output from command "-exec-run". process
exited with status -1 (attach failed ((os/kern) invalid argument))
The program '/path/to/Development/C++/helloworld/main' has exited with code 42
(0x0000002a).

It is worth mentioning that I am using an MacBook (M1), so x86_64 is not the correct architecture. I'm assuming that this is the reason for the error.

I can't seem to find any reference to this error anywhere online. How can I solve this?

Adding "targetArchitecture": "ARM64" removed the warning, but it does not fix the error.

Spoof answered 26/4, 2021 at 16:33 Comment(2)
Please review Why not upload images of code/errors when asking a question? (e.g., "Images should only be used to illustrate problems that can't be made clear in any other way, such as to provide screenshots of a user interface.") and take the appropriate action. Thanks in advance.Precondemn
I downvoted this question for having images of codes.Deltoro
R
59

I had the same problem and I found that Visual Studio Code does not support a debugger for ARM64 binaries yet. Here is the issue link.

However, it works if you use another extension. Install CodeLLDB and set "type": "lldb" in launch.json like below.

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
      {
        "name": "clang++ - Build and debug active file",
        "type": "lldb",
        "request": "launch",
        "program": "${fileDirname}/${fileBasenameNoExtension}",
        "args": [],
        "cwd": "${workspaceFolder}",
        "preLaunchTask": "clang++ build active file"
      }
    ]
  }

You can check quick start guide of vscode-lldb repository.

Note that preLaunchTask's value should be the same as the label's value in your task.json file.

Ramsey answered 25/5, 2021 at 17:44 Comment(1)
As a Neovim user, I can also confirm that codelldb is far more stable and easy to setup than cpptools. (cppdbg/cpptools has problems killing the debuggee and lldb after the debugging session)Overshoe
C
1

Make an executable with the command:

gcc file_name.c -g

File launch.json

"targetArchitecture": "x86_64",

Coastline answered 30/8, 2021 at 0:19 Comment(0)
P
1

Using cargo's config instead of "program" resolved it for me (using Rust and LLDB).

{
  "name": "(OSX) Launch",
  "type": "lldb",
  "request": "launch",
  "cargo": {
    "args": ["build", "--manifest-path", "${fileDirname}/../Cargo.toml"]
  }
}
Puppet answered 10/1, 2023 at 19:34 Comment(0)
B
0

In 2023, the LLDB debugger works for Rust on macOS Monterey 12.5.1 with an M1 chip:

I installed the CodeLLDB extension. In the vscode menu bar, I clicked on View > Extensions, then in the search text box I typed in CodeLLDB, then I clicked on "install".

I configured launch.json. I created my program with cargo new, and in vscode I made sure that the top directory in Explorer (View > Explorer) was my program's directory, e.g. guessing_game3. I did that by clicking File > Open Folder, then navigating to my program's top level directory.

Then I clicked on the Run and Debug icon on the left side of vscode:

enter image description here

which produced this view:

enter image description here

If you see this instead:

enter image description here

that means you already have a .vscode directory in your program's directory OR one of your program's parent directories. I did that by accident somehow, so I went into one of the parent directories and deleted the .vscode directory:

one_of_my_programs_parent_dirs% rm -rf ./.vscode

Okay, back to the previous image....I clicked on "Create a launch.json file", and a dialog box popped up:

enter image description here

I clicked "Yes". That created a .vscode directory in my program's directory, which contained the launch.json file:

enter image description here

That's it. The debugger worked. You can read about how to use the debugger here:

https://code.visualstudio.com/docs/editor/debugging

Bennink answered 19/5, 2023 at 17:15 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.