VSCode,MacOS Catalina - 不会在 C/C++ 调试的断点处停止
VSCode, MacOS Catalina - doesn't stop on breakpoints on C/C++ debug
我正在尝试在 Mac 上使用 VSCode 开发的 C 代码上设置断点。
我的代码似乎可以编译并且 运行 很好(感谢 'openssl/crypto.h' file not found on vscode B.T.W)但是我没有得到任何断点,甚至在开始使用 "stopAtEntry": true
或附加到 运行ning 进程。
我的tasks.json
和launch.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
}
}
]
}
我知道 以及此处所有类似的讨论。
我的设置是:
MacOS Catalina(10.15,生产)以及 XCode 11.1、Visual Studio 代码 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
是 sits between the IDE and the lldb API itself.
的驱动程序
似乎与插件捆绑在一起的 lldb-mi
版本与 Catalina 不兼容,XCode 11.x 不再有 lldb-mi
.
github 线程提供了 2 个临时解决方案:
lldb-mi
第一个解决方案是通过设置 launch.json
的 miDebuggerPath
属性 来使用与以前版本的 XCode 捆绑在一起的 lldb-mi
。
我正好有 XCode 10.1,所以我的配置是:
"miDebuggerPath":"/Applications/Xcode 10.1.app/Contents/Developer/usr/bin/lldb-mi",
我设法进行了基本调试,但还有 compatibility issues to be expected。然而,事实证明这足以满足我的需求(耶!)。
替换 lldb 前端
第二种解决方案是使用VSCode-lldb extension。
这里有更新
我会保留这个答案,一旦它出现,这个 post 就会更新为永久解决方案。
按照@Vaiden 解决方案 2,我继续进行我的 C++ vscode 调试。我补充了如何在我的调试配置中使用它。
安装 CodeLLDB vscode 扩展
修改launch.json配置文件
{
"version": "0.2.0",
"configurations": [
{
//...other configuration
"type": "lldb", // change this one from cppdbg to lldb
}
]
}
- F5 开始调试您的代码,它应该可以解决您的 lldm-mi 问题
我正在尝试在 Mac 上使用 VSCode 开发的 C 代码上设置断点。
我的代码似乎可以编译并且 运行 很好(感谢 'openssl/crypto.h' file not found on vscode B.T.W)但是我没有得到任何断点,甚至在开始使用 "stopAtEntry": true
或附加到 运行ning 进程。
我的tasks.json
和launch.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
}
}
]
}
我知道
我的设置是: MacOS Catalina(10.15,生产)以及 XCode 11.1、Visual Studio 代码 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
是 sits between the IDE and the lldb API itself.
似乎与插件捆绑在一起的 lldb-mi
版本与 Catalina 不兼容,XCode 11.x 不再有 lldb-mi
.
github 线程提供了 2 个临时解决方案:
lldb-mi
第一个解决方案是通过设置 launch.json
的 miDebuggerPath
属性 来使用与以前版本的 XCode 捆绑在一起的 lldb-mi
。
我正好有 XCode 10.1,所以我的配置是:
"miDebuggerPath":"/Applications/Xcode 10.1.app/Contents/Developer/usr/bin/lldb-mi",
我设法进行了基本调试,但还有 compatibility issues to be expected。然而,事实证明这足以满足我的需求(耶!)。
替换 lldb 前端
第二种解决方案是使用VSCode-lldb extension。
这里有更新
我会保留这个答案,一旦它出现,这个 post 就会更新为永久解决方案。
按照@Vaiden 解决方案 2,我继续进行我的 C++ vscode 调试。我补充了如何在我的调试配置中使用它。
安装 CodeLLDB vscode 扩展
修改launch.json配置文件
{ "version": "0.2.0", "configurations": [ { //...other configuration "type": "lldb", // change this one from cppdbg to lldb } ] }
- F5 开始调试您的代码,它应该可以解决您的 lldm-mi 问题