关于Vscode的C语言的单文件调试,可以参见VScode调试C语言的设置(win10,Linux),里面已经说明基本的配置和使用。

下面说明一下如何调试多个文件的工程,首先写一个简单的工程,其中工程目录如下图1所示。

​图1 工程目录结构

文件的结构也特别简单,就是在每一个文件夹下放置两个文件,一个为xxx.c的文件,一个为xxx.h的文件,这么存放文件的好处就是:结构比较清楚,对于已经完成的demo文件,也更加方便移植。

首先,对于add.c,内容如下

#include "sub.h"

int sub(int a, int b)
{
return a + b;
}

对于add.h文件,内容如下

#ifndef __ADD_H__
#define __ADD_H__ int add(int a, int b); #endif

对于其他的几个文件,都是按照这种形式编写,只不过完成的就是简单的加减乘除的功能。

关于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 = , b = ; 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 ;
}
就上面的工程,在win10下选择调试之后,出现效果如图2所示。
​图2 win10下调试的效果

在Linux系统下(ubuntu),调试的效果如图3所示。

​图3 Linux(Ubuntu)下的调试的效果

效果已经看到了,那么下面,简单说明一下调试的配置文件了。

1、launch.json文件可以详见点我!点我!就是我!

2、tasks.json文件

根据GCC编译的参数的选择,我们在实际的编译过程需要将main.c中包含的xxx.h文件和xxx.c源文件包含到GCC的编译参数中,即:

​图4 Vscode中命令编译示意

那么,在tasks.json中关于GCC编译的参数可以这样写:

{
"version": "2.0.0",
"tasks": [
{
"label": "Build", // 任务名称,与launch.json的preLaunchTask相对应
"command": "gcc", // 要使用的编译器
"args": [
"${file}", //在哪个文件的视图上选择仿真,则选择哪个文件
"${fileDirname}/add/add.c",
"${fileDirname}/sub/sub.c",
"${fileDirname}/mul/mul.c",
"${fileDirname}/dev/dev.c",
"-o", // 指定输出文件名,不加该参数则默认输出a.exe,Linux下默认a.out
"${fileDirname}/${fileBasenameNoExtension}.exe",//选择输出的文件名称,和前面的${file}是对应的,一般默认的名称就是前面的${file}.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" // 不同的文件的编译信息共享一个终端面板
},
}
]
}

可以看到,在开始调试时候(win10环境下),在终端会打印出编译的命令,如图5所示。

​图5 终端打印的信息 

如果按照上述的的tasks.json配置完成后,还不能够正常调试。则可以按照在终端打印出来的信息来编辑tasks.json中下面的这些信息:

"${fileDirname}/add/add.c",
"${fileDirname}/sub/sub.c",
"${fileDirname}/mul/mul.c",
"${fileDirname}/dev/dev.c",

Vscode调试C的多文件工程配置的更多相关文章

  1. VSCode中C/C++库文件的配置

    VSCode中C/C++库文件的配置 之前一直在是用sublime做主要编辑器,现在主要使用VSCode,毕竟大厂制作,从目前的使用情况来看,我更喜欢使用VSCode编辑器. 有时候会用VScode来 ...

  2. vscode调试单个PHP脚本文件

    1.安装完vscode里的debug插件后, 在WorkSpace setting:添加上php的可执行文件路径: 2.下载适合自己PHP版本的Xdebug 3.在PHP目录下的php.ini配置文件 ...

  3. vscode调试golang环境搭建及配置

    准备VSCode 在官网下载最新版的VSCode: 安装Golang插件 打开扩展面板 VSCode->查看->扩展 找到Go插件 在搜索框里输入Go, 找到第二行写有 Rich Go l ...

  4. VScode开发STM32/GD32单片机-MakeFile工程JlinkRTT配置

    本次使用开发板为STM32F401CCU6,使用CubeMX配置一个Makefile工程 配置时候为内部时钟 工程选择makefile工程类型 只生成需要的文件 用VSCode打开后显示很多波浪线 选 ...

  5. linux下vscode的c++工程配置

    准备 安装vscode,可直接下载deb包进行安装,完成后安装C/C++ for Visual Studio Code插件,安装后重启(最新1.3版本以后不需要重启). 生成目录和文件 新建文件夹[t ...

  6. 使用VSCode调试单个PHP文件

    突然发现是可以使用 VSCode 调试单个 PHP 文件的,今天之前一直没有弄成功,还以为 VSCode 是不能调试单文件呢.这里记录一下今天这个"突然发现"的过程. 开始,是在看 ...

  7. vscode调试html文件

    1. vscode调试html文件 1.1. 使用Debugger for Chrome进行调试 1.1.1. 基于本地file配置方式调试 1.1.2. 基于服务端配置方式调试 1.1.2.1. 启 ...

  8. Mac 配置vscode调试PHP

    Mac系统版本:MacOS Mojave  10.14.5 vscode:1.36.0 MacOS Mojave  10.14.5 系统自带 PHP 7.1.23 1.开启php sudo vim / ...

  9. 前端之旅一:vscode调试web配置

    vscode调试web配置 第一步:安装vscode,并启动(vscode的安装包自行到其官网上下载) 第二步:在vscode上安装chrome插件 第三步:配置,启动调试 配置信息 { // Use ...

随机推荐

  1. 关于background-size 的一点小坑

    目前在做一个网页,要求使用一个图片作为背景,必须要全屏目填充,于是我想,这不是很简单的事情么: 有两种实现方法:首先设置添加一个div(或者body),把div(或者body)元素的宽和高都设置成10 ...

  2. [Linux]系统管理: 进程管理(ps/top/pstree/kill/pkill), 工作管理, 系统资源查看, 系统定时任务

    进程管理:查看与终止 进程查看 1. 进程是正在执行的程序或命令. 2. 进程管理的作用: 判断服务器健康状态, 查看系统中所有进程 杀死进程 3. 查看系统中所有进程 ps aux    # 查看系 ...

  3. mysql 采样查询 / 间隔查询 / 跳跃查询的两种实现思路

    先创建一张测试表 CREATE TABLE `test` ( `id` ) DEFAULT NULL, `) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET= ...

  4. js中的“默默的失败”

    看阮一峰的js标准教程,看到了“默默的失败”觉得很形象也很无奈, 总结一下都有哪些地方会“默默的失败” 字符串内部的单个字符无法改变和增删,这些操作会默默地失败. var s = 'hello'; d ...

  5. eclipse与idea快捷键对比以及idea debug、git快捷键

    eclipse与idea快捷键 表格中的空格都是忘记了~ 功能 eclipse idea 生成返回值对象 alt+shift+L ctrl+alt+V 找到启动类   ctrl+alt+Home 类的 ...

  6. C语言基础01

    1. 用scanf清理缓冲区数据 scanf("%*[^\n]"); scanf("%*c"); 2. 格式转换 将无符号整型数value转换成字符串并返回该字 ...

  7. 文件下载Controller,文件夹内容监听,文件上传,运行程序通过url实现文件下载

    文件下载Controller @RequestMapping("/fileDownLoad") public ResponseEntity<byte[]> fileDo ...

  8. 《Go程序设计语言》读书笔记-函数

    函数包含连续执行的语句,可以使用代码中通过调用函数来执行他们,函数能够将一个复杂的工作切分成多个更小的模块,使多人写作变得容易.另外,函数对他的使用者隐藏了实现细节.这几方面的特性使得函数成为多数编程 ...

  9. 分组\聚合\F\Q查询

    一.分组和聚合查询 1.aggregate(*args,**kwargs)  聚合函数 通过对QuerySet进行计算,返回一个聚合值的字典.aggregate()中每一个参数都指定一个包含在字典中的 ...

  10. idea激活方式

    idea破解方法:转自https://note.youdao.com/ynoteshare1/index.html?id=d0f3fb42bfa1bb65a33115a1b6140f5f&ty ...