VScode调试C语言的设置(win10,Linux)
作为一个程序猿,编程的时候不能方便的进行在线调试是多么痛苦的事情呀,虽然在Linux环境下GDB调试很方便,但是作为小脑容量+手残党的小白来说,GDB真的很烦呀!直到在2018年的4月份的一个月高风黑的夜晚,遇到了Vscode……
中途好长时间没有在用Vscode调试,直到最近某一天想写一个module程序,在调试的时候竟然告诉我,属性已经弃用……,晴天霹雳呀,我的天!
所以,痛定思痛,没有一劳永逸的事情,改变才是不变的真理,那么,搞吧!
一、在win10环境下
环境: Window 10 企业版 64bit、MinGW 5.1.6、Vscode(version 1.22.2
配置文件:
1、launch.json:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "2,0.0", //配置文件的版本,以前使用是0.2.0,新版本已经弃用,改用为2.0.0
"configurations": [ //配置域
{
"preLaunchTask": "Build", //调试会话开始前执行的任务,一般为编译程序。与tasks.json的label相对应
"name": "(gdb) Launch", //配置文件的名字,可以随便起
"type": "cppdbg", //调试的类型,Vscode现在支持很多,我这里主要是C,所以只能是cppdbg
"request": "launch",//配置文件的请求类型,有launch和attach两种,具体看官方文档
"targetArchitecture": "x64", //硬件内核架构,为64bit,如图设置
"program": "${workspaceRoot}/${fileBasenameNoExtension}.exe",//可执行文件的路径和文件名称
"args": ["file1", "file2"],//主函数调用时传入的参数
"stopAtEntry": false,//设为true时程序将暂停在程序入口处
"cwd": "${workspaceFolder}",//调试时的工作目录
"environment": [],//不知道干嘛的
"internalConsoleOptions": "openOnSessionStart",//
"externalConsole": true,//调试时是否显示控制台窗口
"MIMode": "gdb",//指定连接的调试器,可以省略不写
"miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",//调试器路径,在Linux环境下需要注释掉这一行
"setupCommands": [ //不知道干嘛的
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
}
]
}
2、tasks.josn
简单配置如下,配合launch.json也可以正常运行
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"command": "gcc",
"args": [ "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}.exe", "-g", ],
"problemMatcher": {
"owner": "cpp",
"fileLocation": ["relative", "${workspaceRoot}"],
"pattern": {
"regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
"file": 1,
"line": 2,
"column": 3,
"severity": 4,
"message": 5
}
}
}
复杂点的配置,主要是为了在下一次不好用的时候根据下面的注释说明能改成正常调试
{
"version": "2.0.0",
"tasks": [
{
"label": "Build", // 任务名称,与launch.json的preLaunchTask相对应
"command": "gcc", // 要使用的编译器
"args": [
"${file}",
"-o", // 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out
"${fileDirname}/${fileBasenameNoExtension}.exe",
"-g", // 生成和调试有关的信息
"-Wall", // 开启额外警告
], // 编译命令参数
"type": "shell", // 可以为shell或process,前者相当于先打开shell再输入命令,后者是直接运行命令
"group": {
"kind": "build",
"isDefault": true // 设为false可做到一个tasks.json配置多个编译指令,需要自己修改本文件
},
"presentation": {
"echo": true,
"reveal": "always", // 在“终端”中显示编译信息的策略,可以为always,silent,never。具体参见VSC的文档
"focus": false, // 设为true后可以使执行task时焦点聚集在终端
"panel": "shared" // 不同的文件的编译信息共享一个终端面板
},
}
]
}
效果:
二、在Linux环境下
环境:Ubuntu 16.04 LTS 64Bit、gcc (version 5.4.0)、gdb、Vscode(version 1.22.2)
配置与上述的配置一致,只是删掉了配置文件launch.json中的这一行
"miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",//调试器路径,在Linux环境下需要注释掉这一行
效果: