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.

2

4 Answers

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: "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.

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"] } } 

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:

Make an executable with the command:

gcc file_name.c -g 

File launch.json

"targetArchitecture": "x86_64",

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.