vscode先安装C/C++、CodeLLDB插件;
修改用户settings.json:
{
...
"terminal.integrated.profiles.windows": {
...
"cygwin64": {
"path": "D:\\cygwin64\\bin\\bash.exe",
"args": ["--login","-i"],
"env": {"CHERE_INVOKING": "1"} // 切换到当前工作目录
}
}
...
}
.vscode目录下添加工作区settings.json:
{
"terminal.integrated.defaultProfile.windows": "cygwin64",
"terminal.integrated.env.windows": {
"CHERE_INVOKING":"1",
"PATH":"${PATH};D:/cygwin64/bin",
"MSYSTEM":"MINGW64"
},//导入bash环境,重要
}
.vscode目录下添加c_cpp_properties.json:
{
"configurations": [
{
"name": "Win64",
"includePath": [
"${workspaceFolder}/**",
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"cStandard": "c17",
"cppStandard": "gnu++17",
"intelliSenseMode": "linux-gcc-x64",
"compilerPath": "D:/cygwin64/bin/gcc.exe"
}
],
"version": 4
}
.vscode目录下添加tasks.json:
{
"tasks": [
{
"type": "shell",
"label": "cmake",
"command": "cmake",
"args": [
"../",
"-DCMAKE_BUILD_TYPE=Debug", // 配置debug模式
"-G'Unix Makefiles'" // 使用windows版本的cmake必须指定这个,cygwin64才能使用
]
},
{
"type": "shell",
"label": "make",
"command": "make",
"args": ["-j4"], // 多进程编译提高速度
"dependsOn": [
"cmake"
]
},
{
"label": "build",
"dependsOn": [
"make"
]
}
],
"version": "2.0.0",
"options": {
"cwd": "${workspaceFolder}/build",
"env": {
"PATH": "${env:PATH};D:\\cygwin64\\bin;D:\\Program Files\\CMake\\bin", // 添加环境变量
}
},
}
.vscode目录下添加launch.json:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "main", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${workspaceFolder}/build/test.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${workspaceFolder}/build", // 调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录
"environment": [{"name":"PATH","value":"${env:PATH};D:\\cygwin64\\bin"}],
"externalConsole": false, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"MIMode": "gdb",
"miDebuggerPath": "D:\\msys64\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
}
]
}
好了,这样就可以直接按F5启动调试了。
因为cygwin64使用的是posix路径格式,在vscode终端窗口中输出的错误文件路径是形如“/cygdrive/d/GccProject/test.c”的posix路径格式,不能直接跳转,解决方法如下:
使用cywin64-setup-x86_64.exe卸载cygwin64的cmake;
https://cmake.org/download/官网下载Windows x64 ZIP版本的cmake-3.26.3-windows-x86_64.zip,解压放到D:\Program Files\CMake文件夹下;
修改用户环境变量PATH添加D:\Program Files\CMake\bin;
打开cmd运行cmake --version输出如下表示配置成功:
C:\Users\Administrator>cmake --version
cmake version 3.26.3
CMake suite maintained and supported by Kitware (kitware.com/cmake).
重启vscode使配置生效;
现在vscode终端窗口中输出的错误文件路径就是形如“D:/GccProject/test.c”的ntfs路径格式,按住ctrl点击就可以在编辑器中自动跳转到相应位置。
2023年4月17日更新:
发现新问题,用cgywin64自带的gdb调试,命中断点时,会出现“由于找不到该文件,因此无法打开编辑器”的错误提示:
![](https://i-blog.csdnimg.cn/blog_migrate/5fa6f770832c8a47ebd743ae1539fe57.png)
解决办法是不用cygwin64的gdb,用mingw64的gdb调试,修改lauch.json文件如下:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "main", // 配置名称,将会在启动配置的下拉菜单中显示
"type": "cppdbg", // 配置类型,这里只能为cppdbg
"request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
"program": "${workspaceFolder}/build/test.exe", // 将要进行调试的程序的路径
"args": [], // 程序调试时传递给程序的命令行参数,一般设为空即可
"stopAtEntry": false, // 设为true时程序将暂停在程序入口处,一般设置为false
"cwd": "${workspaceFolder}/build", // 调试程序时的工作目录,一般为${workspaceFolder}即代码所在目录
"environment": [{"name":"PATH","value":"${env:PATH};D:\\cygwin64\\bin"}],
"externalConsole": false, // 调试时是否显示控制台窗口,一般设置为true显示控制台
"MIMode": "gdb",
"miDebuggerPath": "D:\\msys64\\mingw64\\bin\\gdb.exe",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "build", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
}
]
}
一切正常,欢迎评论收藏,谢谢。