c++ - 如何在 Visual Studio 代码中在 Mac 上使用调试器设置 C++
问题描述
我正在尝试设置 Visual Studio 代码以在 macOS 上使用 g++ 编译器构建/运行和调试 c++ 文件。但是,当我构建或调试代码时,我可以看到输出文件已创建并且我也可以运行它但是我无法在 vscode 中调试它,因为调试会产生奇怪的行为。
到目前为止,我已经能够编写构建 .cpp 文件并执行它的任务。输出进入 vscode 的终端。但是,当我尝试调试时,会打开一个新终端并且没有命中断点。
这是tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "Build with g++",
"type": "shell",
"command": "g++",
"args": [
"-Wall",
"-Wextra",
"-Wpedantic",
"-std=c++11",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"group": {
"kind": "build",
"isDefault": true
}
},
{
"label": "run",
"type": "shell",
"command": "cd ${fileDirname}/ && ./${fileBasenameNoExtension}",
"dependsOn": ["Build with g++"]
}
]
}
这是我的launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "(lldb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"showDisplayString": false,
"environment": [],
"externalConsole": true,
"internalConsoleOptions": "openOnSessionStart",
"MIMode": "lldb",
"logging": {
"moduleLoad": false,
"programOutput": true,
"trace": false
},
"preLaunchTask": "Build with g++",
"osx": {
"MIMode": "lldb"
}
}
]
}
我希望当我点击调试或按 f5 时,vscode 中的终端应该运行并且我能够调试程序。
解决方案
因为你VSCode Debugger Extension
有虫子。
在mac上使用VSCode成功设置C++调试:我clang/gcc
用作编译器,Code-Runner
(VSCode Extension)作为运行器,(VSCode Extension C/C++ Clang Command Adopter
)作为提供静态检测,CodeLLDB
(VSCode Extension)用于调试C++。请勿下载Microsoft C/C++
(标识符:ms-vscode.cpptools
,用于 C/C++ IntelliSense、调试和代码浏览。微软官方出品的扩展程序),因为这个 CPPtools 和那个 CodeLLDb 冲突。
为避免任何问题,请不要下载任何 VSCode 扩展。这是我在 mac 上使用 VSCode 调试 C++ 的配置
VSCode v1.63.2
:
Code Runner v0.11.6
(作者:韩俊)</p>
C/C++ Clang Command Adapter v0.2.4
(作者:三谷靖明)</p>
CodeLLDB v1.4.5
(作者:瓦迪姆·楚古诺夫)
Clang v9.0.0
gcc v4.2.1
Intel CPU
macOS 10.12
配置成功详情参考这里:</p>
推荐阅读
- react-native - 如何在 react native expo 项目中添加 Mixpanel?
- r - R:有效地确定一个数组的哪些切片在一秒钟内出现
- javascript - 如何使用 Javascript 在网站中单击 SVG 的一部分?
- ruby-on-rails - Rails 6 Active Storage:找不到或构建 blob:预期可附加,得到 nil
- c# - 为什么 System.IO.FileLoadException 中有 2 个不同的版本:无法加载文件或程序集
- regex - 字母数字加下划线的正则表达式,但不仅仅是数字
- angular - 角服务工作者。缓存接收到的数据
- javascript - 如何在javascript submit() 中使用formaction?
- asp.net-mvc - 使用移动设备浏览时如何下拉刷新整个页面 ASP.NET MVC?
- php - 如何创建评分帖子?