1. vscode安装c/c++插件
在vscode右边侧边栏的插件扩展中安装c/c++调试插件
2. mingw-w64的安装,推荐直接下载离线版安装
第一种方式:通过自动安装程序指引安装。
安装程序下载地址:https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/。注意是直接下载自动安装程序,而不是一堆的代码或者组件。
https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/installer/mingw-w64-install.exe/download
如下面的第二个所示。第一个是32位的,已经不再维护。安装64位mingw-w64。
直接双击,点next后续可以一步步完成安装。详细看可以参考:https://www.cnblogs.com/ggg-327931457/p/9694516.html
第二种方式:直接下载离线版安装文件安装
离线文件路径:
https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/8.1.0/threads-posix/seh/x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z/download
下载完后第三个压缩文件所示:
解压完后文件目录如下:
在安装目录的bin下面有后续需要用到的gcc编译器等,将路径加入到系统环境变量的path中。
cmd中输入gcc -v可以正常显示版本号,则安装正常。
3. vscode调试程序
新建一个文件夹,vscode打开文件夹,在文件夹中新建一个hello.c文件。点击调试按钮,选择C++(GDB/LLDB),会生成launch.json文件。
launch.json参考如下修改:
再新建一个tasks.json文件,参照如下配置。
选择vscode-->终端->运行任务,选择gcc。会生成与代码文件同名的.exe可执行文件,如图第3个文件。
然后选择调试,启动调试。可以看到程序正常运行了。代码中增加了一个循环,可以保持打印窗口一直在线。
=====================================
launch.josn文件:
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.exe",// 将要进行调试的程序的路径,及默认执行文件名称
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true, // 修改为true
"MIMode": "gdb",
"miDebuggerPath": "D:\\mingw64\\bin\\gdb.exe", // gdb安装对应的目录
"preLaunchTask": "gcc", // 调试会话开始前执行的任务,一般为编译程序,c++为g++, c为gcc
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
===================================
tasks.josn文件
{
"version": "2.0.0",
"command": "gcc", //gcc地址
"args": ["-g","${file}","-o","${fileBasenameNoExtension}.exe"], // 编译命令参数
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}