在 macOS 上启动调试会话时,Visual Studio Code LLDB 出现错误。

27

我正在尝试在 macOS 上配置 Visual Studio Code 以编译/调试 C++ 程序。我正在使用以下launch.json文件:

Enter image description here

当我尝试启动调试会话时,我收到以下错误信息:
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).

值得一提的是,我正在使用 MacBook(M1),因此x86_64不是正确的架构。我猜这就是错误的原因。
我似乎找不到关于这个错误的任何参考资料。我该如何解决?
添加"targetArchitecture": "ARM64"可以消除警告,但不能修复错误。

1
请阅读并执行 为什么在提问时不上传代码/错误的图片?(例如,"只有当没有其他方法能清晰表达问题时,才应使用图片来说明问题,例如提供用户界面的截图。")并采取适当的行动。先行感谢。 - Peter Mortensen
我对这个问题进行了负评,因为它包含了代码的图片。 - undefined
4个回答

55
我遇到了同样的问题,发现Visual Studio Code目前还不支持ARM64二进制文件的调试器。这里是相关问题的链接link
不过,如果你使用另一个扩展程序,它是可以工作的。安装CodeLLDB并在launch.json中设置"type": "lldb",如下所示。
{
    // 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"
      }
    ]
  }

你可以查看 vscode-lldb 仓库的 快速入门 指南。
请注意,preLaunchTask 的值应与你的 task.json 文件中的 label 值相同。

该问题已于2022年3月关闭。 - Boris Verkhovskiy
作为一个Neovim用户,我也可以确认codelldb比cpptools更稳定且更容易设置。(cppdbg/cpptools在调试会话结束后存在终止被调试程序和lldb的问题) - NeoZoom.lua

1

使用Cargo的配置代替"program",可以解决这个问题(我是用Rust和LLDB)。

{
  "name": "(OSX) Launch",
  "type": "lldb",
  "request": "launch",
  "cargo": {
    "args": ["build", "--manifest-path", "${fileDirname}/../Cargo.toml"]
  }
}

0

使用以下命令创建可执行文件:

gcc file_name.c -g

文件 launch.json

"targetArchitecture": "x86_64",


0

在2023年,LLDB调试器可以在macOS Monterey 12.5.1上的M1芯片上为Rust工作:

我安装了CodeLLDB扩展。在vscode菜单栏中,我点击了查看 > 扩展,然后在搜索框中输入了CodeLLDB,然后点击了“安装”。

我配置了launch.json。我使用cargo new创建了我的程序,并确保在vscode中浏览器(查看 > 浏览器)的顶级目录是我的程序目录,例如guessing_game3。我通过点击文件 > 打开文件夹,然后导航到我的程序的顶级目录来实现这一点。

然后我点击了vscode左侧的运行和调试图标:

enter image description here

生成了这个视图:

enter image description here

如果你看到的是这个:

enter image description here

这意味着您的程序目录或者其中一个父目录中已经有了一个 .vscode 目录。我不知道怎么会这样,可能是无意中操作了什么,所以我进入其中一个父目录并删除了 .vscode 目录:

one_of_my_programs_parent_dirs% rm -rf ./.vscode

好的,回到之前的图像...我点击了“创建launch.json文件”,然后弹出了一个对话框:

enter image description here

我点击了“是”。这在我的程序目录中创建了一个名为 launch.json 的文件夹:

enter image description here

完成了。调试器起作用了。您可以在此处阅读有关如何使用调试器的信息:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接