关于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. FireDAC 连接SQL Server一些要注意的地方(转)

    TFDConnection: FetchOptions.Mode 设置为fmAll, 返回全部结果, 否则默认只返回前50条, 效果与open以后再执行FetchAll一样 Specifies how ...

  2. python学习Day7 数据类型的转换,字符编码演变历程

    一.数据类型的转换 1.1.1.字符转列表:lst1 = str.split(默认空格,也可依据指定字符分界),若无分界字符,就没法拆分,这时可以直接放进list转成列表 ----> s1 = ...

  3. 3/1 AT指令集

    一.背景 由于机器与传输时的信号类型不通,机器处理的是数字信号,而传输时是模拟信号,故,要实现这两者间的交互,就需要一个介质,之前是靠硬件,靠人工,硬件使用modem(猫): 现在通过一种命令来实现自 ...

  4. Day05 -寻找自己:Ruby的self物件与singleton method

    前情提要:在第四天里,我们用参赛者的例子解说实体方法与类别方法.类别中的实体物件,想要玩弄方法时,可以有三种取用方式:(跟斯斯有三种一样) 该类别所定义的实体方法. 模块中可取得的实体方法.(关于模块 ...

  5. HTML入门第三天

    三. 表格table(表格类数据): 1.表格标签(重中之重) 基本结构标签: <table>:定义表格区域 <tr>:定义表格的行 <td>:定义表格中的单元格 ...

  6. jemter聚合报告参数指标

    1.聚合报告指标含义 2.性能指标的名称与含义 1)并发:        所有用户在同一时刻对系统执行操作,一般指做同一件事情或操作.2)在线:        所有用户在一段时间内对系统执行操作.3) ...

  7. 验证当前启动APP的Package 和 Activity

    1. 打开手机USB 调试开关 2. 执行: adb devices 3.启动你的测试APP (如手机QQ) 4.执行:adb shell dumpsys window |findstr mCurre ...

  8. JS-jquery对象和dom对象的属性操作区别

    <label class="">时间1</label> <label class="">时间2</label> ...

  9. RESTful Web服务与“大”Web服务: 做出正确的建筑决策

    猜测:REST服务的不足之处 问题:WS- *与REST的争论 结论:REST在灵活性和控制方面得分更高,但需要大量的低级编码; WS- *提供更好的工具支持和编程接口方便,但引入了对供应商和开源项目 ...

  10. SQLServer导入导出命令报错

    错误描述: SQL Server阻止了对组件‘xp_cmdshell’的过程‘sys.xp_cmdshell’的访问.因为此组件已作为此服务嚣安全配置的一部分而被关闭. 系统管理员可以通过使用sp_c ...