VSCode,MacOS Catalina - 不会在 C/C++ 调试时停止断点



我正在尝试使断点在Mac上使用VSCode开发的C代码上工作。

我的代码似乎编译和运行得很好(感谢在 vscode B.T.W 上找不到"openssl/crypto.h"文件(,但我没有得到任何断点,甚至在开始使用"stopAtEntry": true或通过附加到正在运行的进程时也没有。

我的tasks.jsonlaunch.json非常标准:

{
"tasks": [
{
"type": "shell",
"label": "clang build active file",
"command": "/usr/bin/clang",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}",
"-I/usr/local/opt/openssl/include",
"-L/usr/local/opt/openssl/lib",
"-lssl",
"-lcrypto"
],
"options": {
"cwd": "/usr/bin"
}
}
],
"version": "2.0.0"
}

和:

{
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) Attach",
"type": "cppdbg",
"request": "attach",
"program": "${workspaceFolder}/test2",
"processId": "${command:pickProcess}",
"MIMode": "lldb"
},
{
"name": "clang build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "lldb",
"preLaunchTask": "clang build active file",
"logging": {
"trace": false,
"traceResponse": false,
"engineLogging": false
}
}
]
}

我知道VS代码忽略了c ++调试中的断点以及这里所有类似的讨论。

我的设置是: MacOS Catalina(10.15,生产(以及XCode 11.1,Visual Studio Code 1.39.0和C/C++扩展0.26.0-insiders3。

有没有人比我运气更好?

所以显然这是Catalina和XCode 11.x支持的已知问题:https://github.com/microsoft/vscode-cpptools/issues/3829 由lldb-mi引起的。

lldb-mi是位于 IDE 和 lldb API 本身之间的驱动程序。

似乎与插件捆绑在一起的lldb-mi版本与Catalina不兼容,XCode 11.x不再具有lldb-mi

github 线程提供 2 个临时解决方案:

LLDB-MI

第一种解决方案是使用与以前版本的 XCode 捆绑在一起的lldb-mi,方法是将miDebuggerPath属性设置为launch.json.

我碰巧有XCode 10.1,所以我的配置是:

"miDebuggerPath":"/Applications/Xcode 10.1.app/Contents/Developer/usr/bin/lldb-mi",

我设法使基本调试正常工作,但存在兼容性问题。然而,事实证明这足以满足我的需求(耶!

替换 lldb 前端

第二种解决方案是使用 VSCode-lldb 扩展。

更新来了

一旦出现,我将保持这个答案和这篇文章的永久解决方案。

继续@Vaiden解决方案 2,我继续进行C++ vscode 调试。我补充了如何在调试配置中使用它。

  1. 安装 CodeLLDB vscode 扩展

  2. 修改启动.json 配置文件

{
"version": "0.2.0",
"configurations": [
{
//...other configuration
"type": "lldb", // change this one from cppdbg to lldb
}
]
}
  1. F5 开始调试您的代码,它应该可以解决您的 lldm-mi 问题

相关内容

  • 没有找到相关文章

最新更新