启动调试会话时 macOS 上的 Visual Studio Code LLDB 错误

问题描述 投票:0回答:5

我正在尝试配置 Visual Studio Code 以在 macOS 上编译/调试 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”删除了警告,但并没有修复错误。

c++ visual-studio-code lldb vscode-debugger
5个回答
59
投票

我遇到了同样的问题,我发现 Visual Studio Code 还不支持 ARM64 二进制文件的调试器。这是问题链接

但是,如果您使用其他扩展程序,它就可以工作。安装 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 文件中标签的值相同。


1
投票

使用货物的配置而不是“程序”为我解决了这个问题(使用 Rust 和 LLDB)。

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

1
投票

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

gcc file_name.c -g

文件launch.json

“目标架构”:“x86_64”,


0
投票

2023 年,LLDB 调试器可在配备 M1 芯片的 macOS Monterey 12.5.1 上运行 Rust:

我安装了 CodeLLDB 扩展。 在 vscode 菜单栏中,我单击

View > Extensions
,然后在搜索文本框中输入
CodeLLDB
,然后单击“安装”。

我配置了launch.json。 我用

cargo new
创建了我的程序,在 vscode 中我确保资源管理器中的顶级目录(视图 > 资源管理器)是我的程序目录,例如猜测游戏3。 我通过单击
File > Open Folder
,然后导航到程序的顶级目录来完成此操作。

然后我点击了vscode左侧的

Run and Debug
图标:

enter image description here

产生了这个视图:

enter image description here

如果您看到的是这个:

enter image description here

这意味着您的程序目录中已经有一个 .vscode 目录OR您的程序的父目录之一。 我无意中这样做了,所以我进入其中一个父目录并删除了

.vscode
目录:

one_of_my_programs_parent_dirs% rm -rf ./.vscode

好吧,回到上图....我点击了“创建launch.json文件”,弹出了一个对话框:

enter image description here

我点击“是”。 这在我的程序目录中创建了一个 .vscode 目录,其中包含

launch.json
文件:

enter image description here

就是这样。 调试器工作了。 您可以在此处阅读有关如何使用调试器的信息:

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


0
投票

看起来像现在支持Apple Silicon的本机调试支持。

目标架构的检测似乎仍然存在问题(无论如何对我来说),可以通过将以下内容插入到 launch.json 中来修复:

         "setupCommands": [
            {
               "text": "settings set target.arch arm64"
            }
         ],

这会将

settings set
命令发送到 lldb 并覆盖默认架构
x86_64
,否则会使用该架构。只需将上面的行插入到
"MIMode": "lldb",
行之后即可。

PS。请注意,如果您使用

"externalConsole": true
,则此解决方案不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.