vscode 使用makefile 在线调试运行C/C++程序的方法

1、前言

     上一篇文章vscode在线调试C/C++程序的方法中介绍了调试程序的方法,由于文章中使用的编译程序规则是调用task.json中来实现的,不适用于一般的程序。目前大多数程序都是来使用makefile来进行编译来调试的,本文将介绍使用vscode调用makefile来实现程序编译,最后来实现程序调试的方法。

2、工程准备

       准备一个可以通过make进行的编译的工程,工程还是采用上一篇文章的工程,如下图,工程中具有main.c, bch.c, node_auth.c,sensor_auth.c还有链接的库文件等。

3、工程设置 

       这个工程在是可以直接使用make进行编译的,那么在vscode中也是可以调用make进行编译的。调用方法就是修改task.json文件。

    由于要进行在线调试,所以生成的目标文件必须带有调试信息,所以在Makefile文件中要增加-g来输出调试信息,本工程中使用外部传入参数的方式来控制进行make的,所有需要对Makefile做如下修改。

 

      在线调试时vscode会调用launch.json来启动调试,所以要设置编译生成的目标文件,本工程编译生成的目标文件为auth,所以需要修改lauch.json调用目标文件auth。

4、启动调试

     上面对工程的设置已经完成,打开程序的入口的文件 main.c文件,点击调试”C/C++文件“按钮,即可进行调试界面。

 

         进入到调试界面了,如下图。

 

5、Makefile插件调试

     如果vscode中安装了makefile插件。也可以使用makefile来进行编译,调试,请大家自行探索。

 

### 配置和运行 Makefile 为了在 VSCode 中成功配置并运行 Makefile,需遵循一系列特定设置。当VSCode项目中包含了已正确配置的`.vscode` 和 `.code-workspace` 文件时,这些文件通常已经定义了必要的构建任务和支持调试的任务[^1]。 对于具体操作,在VSCode内利用快捷键 `CTRL+Shift+P` 可调出命令面板,通过输入`Makefile:` 来查找与Makefile相关的指令选项;其中选择`Makefile: Configure`可以启动针对当前项目的Makefile环境配置向导[^2]。 另外,确保安装了适用于C/C++开发的扩展以及MinGW-w64工具链是非常重要的前置条件之一。这一步骤保证了编译器的存在,并让VSCode能够识别C/C++代码及其依赖项[^3]。 #### 设置工作区 假设已有现成的工作空间文件(即`.code-workspace`),将其放置于工程项目根目录下即可自动加载预设配置。同样地,Makefile也应该位于同一级目录以便被正确解析和执行。 #### 创建或编辑 launch.json 为了让VSCode支持基于Makefile程序调试,可能还需要调整或创建`.vscode/launch.json`来指定如何启动调试会话: ```json { "version": "0.2.0", "configurations": [ { "name": "(gdb) Launch", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/your_executable", // 替换成实际可执行文件路径 "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": true, "MIMode": "gdb", "miDebuggerPath": "/path/to/gdb", // 如果不是默认位置,则指明GDB的位置 "setupCommands": [ { "description": "Enable pretty-printing for gdb", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "preLaunchTask": "build" } ] } ``` 此JSON片段中的`preLaunchTask`字段关联了一个名为`build`的任务,该任务应在每次尝试启动调试前被执行以重新编译源码。这个任务应当已经在tasks.json中有相应的定义。 #### 定义 tasks.json 如果尚未存在用于触发Makefile构建过程的任务定义,可以在`.vscode/tasks.json`里添加如下内容: ```json { "version": "2.0.0", "tasks": [ { "label": "build", "command": "mingw32-make.exe", "args": ["all"], "options": { "cwd": "${workspaceFolder}" }, "problemMatcher": ["$gcc"], "group": { "kind": "build", "isDefault": true } } ] } ``` 这段配置告诉VSCode使用`mingw32-make.exe`作为构建命令,并指向项目根目录下的Makefile进行全量构建(`all`)目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值