在Win10中,配置VScodeC语言的调试配置文件:
刚开始用VScode好不容易把调试配置文件搞通,记一下。
各位大佬发现漏洞,还请指点一下,谢谢。
1.首先准备好待调试的源文件:
并设置好断点
2. 配置文件
然后在创建一个launch.json文件
选择环境:C++(GDB/LLDB)
使用:默认配置
然后会得到一个模板:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "输入程序名称,例如 ${workspaceFolder}/a.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "/path/to/gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
在这个模板中需要做三点修改:
在11行将 "program": "输入程序名称,例如 ${workspaceFolder}/a.exe",
修改为:"program": "${workspaceFolder}/a.exe",
这条语句的意义为:设置将要调试的可执行文件。可执行文件名为 “a.exe” 也可以设置为其他。
将18行的"miDebuggerPath": "/path/to/gdb",
修改为:"miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",
具体修改成什么需要根据GCC编译器存放的路径,例如我的GCC是放在这的:
所以我的gdb路径为"C:\\mingw64\\bin\\gdb.exe"
重点强调:配置文件中路径必须用两次转义字符!!!
修改后完成后为这个样子:
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) 启动",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/a.exe",//第一步
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\\mingw64\\bin\\gdb.exe",//第二步
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
如上:如果在终端编译时加入调试信息(gcc -g *.c -o a.exe
),其实已经可以进行调试
例如:
1) 通过gcc -g *.c -o a.exe
编译生成带调试信息的可执行文件a.exe
2) F5
进入Debug模式
但是如果有需要频繁修改程序然后调试,每次都输入gcc -g *.c -o a.exe
,
就很烦!!! 就很烦!!! 就很烦!!!
所以需要对launch.json
进行第三步的配置:
在第14行后加入一条:"preLaunchTask": "debug",
这条语句的意思为:在执行调试之前执行一个叫debug的任务。
然后就该配置Tasks.json
文件了:
1)ctrl + shift + p
输入Tasks选择任务:配置任务
2) 使用模板创建tasks.json
文件
3) Others 运行任意外部命令的示例
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "echo",
"type": "shell",
"command": "echo Hello"
}
]
}
在这个文件里面我们得修改两个地方:
"label": "echo",
echo
为上文中我们设置的debug
"command": "echo Hello"
"echo Hello"
为gcc命令:gcc -g *.c -o a.exe