Ubuntu 16.04环境下用VSCode调试C语言
前提:已安装GCC编译器、VSCode调试C的相关插件等
一、 单个文件的调试
参考:https://code.visualstudio.com/docs/cpp/config-linux。
1、 建立工程目录,在终端中打开vscode
2、 输入一段代码
在test.c中输入如下代码
#include <stdio.h>
int main(void)
{
int i,sum;
for(i = 0; i < 10;i ++)
{
sum += i;
printf("sum = %d\n",sum);
}
}
3、 创建一个tasks.json
。
提示:这个文件是告诉VScode如何编译程序
- 1)在主菜单中选择
终端->配置默认生成任务
- 2)选择
c/c++: gcc build active file
,即生成tasks.json
.
tasks.json
文件内容如下:
{
// 有关 tasks.json 格式的文档,请参见
// https://go.microsoft.com/fwlink/?LinkId=733558
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "gcc build active file",
"command": "/usr/bin/gcc",//设置指定一个程序去运行
"args": [ //args指定传递给gcc的命令行参数
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
-
3)运行构建
a.回到
test.c
,该任务将构建活动文件----test.c
。
b. 运行tasks.json
中定义的构建任务,按Ctrl+Shift+B
或从终端
主菜单选择运行生成任务
。
c.
d.创建新终端,查看当前路径,会发现有可执行文件生成。
e.该可执行文件可以通过 ./test
运行,可以试一下。
- 4)修改
tasks.json
可以修改${file}
为"${workspaceFolder}/*.c"
以构建多个c文件。
也可以修改输出文件名"${fileDirname}/${fileBasenameNoExtension}"
用带有带有硬编码的文件名(比如:test.out
)。
4、 创建一个launch.json
按F5
调试程序时启动GDB调试器,在主菜单中选择 添加配置
->c++(GDB/LLDB)
->gcc-产生和调试活动文件
。
launch.json
内容如下
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "gcc build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
把 stopAtEntry
改为true,如果为false
的话,不会在源代码中添加任何断点,而true
,在主程序的最开始会停止,方便调试。
5、 回到主程序,可以开始调试。
6、 退出vscode前,先关闭文件夹
二、 多文件工程的调试
参考:https://www.cnblogs.com/songshuaiStudy/p/10728985.html
提示:大体与单个文件相同
1、创建多文件工程
在工程文件夹下,创建四个文件夹,每一个文件夹都有对应的.c
和.h
文件,在工程文件夹下在创建一个main.c
。创建完成后打开 VScode。
2、编程
在add.h
中输入如下程序
#ifndef _ADD_H
#define _ADD_H
int add(int a,int b);
#endif
在add.c
中输入如下程序
#include "add.h"
int add(int a,int b)
{
return (a + b);
}
其余文件,格式相同,这些程序的功能分别为加减乘除,自己补充完毕即可。
在main.c
中输入如下程序
#include "stdio.h"
#include "./add/add.h"
#include "./sub/sub.h"
#include "./mul/mul.h"
#include "./dev/dev.h"
int main(int argc, const char **argv)
{
int a = 10, b = 2;
printf("a + b = %d\r\n", add(a, b));
printf("a - b = %d\r\n", sub(a, b));
printf("a * b = %d\r\n", mul(a, b));
printf("a / b = %d\r\n", dev(a, b));
getchar();
return 0;
}
3、生成tasks.json
并修改
提示:生成tasks.json
方法与单个文件相同
修改tasks.json
如下:
{
// 有关 tasks.json 格式的文档,请参见
// https://go.microsoft.com/fwlink/?LinkId=733558
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "gcc build active file",
"command": "/usr/bin/gcc",
"args": [
"-g",
"${file}",
"${fileDirname}/add/add.c",
"${fileDirname}/sub/sub.c",
"${fileDirname}/mul/mul.c",
"${fileDirname}/dev/dev.c",
"-o",
"${fileDirname}/${fileBasenameNoExtension}"
],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
即加入
"${fileDirname}/add/add.c",
"${fileDirname}/sub/sub.c",
"${fileDirname}/mul/mul.c",
"${fileDirname}/dev/dev.c",
4、创建一个launch.json
提示:与单个文件调试相同
{
// 使用 IntelliSense 了解相关属性。
// 悬停以查看现有属性的描述。
// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc - 生成和调试活动文件",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "gcc build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}