0
点赞
收藏
分享

微信扫一扫

Vscode编译调试C++程序

五殳师兄 2022-02-05 阅读 48
vscodec++gdb

一、简介

本文讲述在windows平台下在Vscode中使用gcc/g++编译C++程序,并使用gdb调试的方法。

二、安装插件和其它依赖

首先在Vscode中安装如下插件:

C/C++

C/C++ Extension Pack

Code Runner

在​ ​​​​​​https://jmeubank.github.io/tdm-gcc/

下载一个最新的gcc

安装gcc后,在cmd中执行命令:gcc -v。如果看到有如下输出,则表明gcc安装成功了。

三、创建项目

在Windows中新建文件夹(比如Test1A),新建main.cpp作为测试用的例子

在main.cpp中增加内容如下:

#include <stdio.h>

int main()
{
    printf("hello world\n");
    getchar();
    return 0;
}

在Vscode中:文件 -> 打开文件夹。打开上述文件夹Test1A

然后可以看到刚刚创建的文件夹和文件都已经被添加进来了。

四、编译运行项目

然后我们还得改Vscode设置,否则编译运行时会出现问题。文件 -> 首选项 -> 设置 -> 用户 -> 扩展 -> Run Code Configuration,把里面的Run In Terminal 选项勾上

 

完成上述操作后,重启Vscode。鼠标右键单机Vscode的代码编辑区,在出现的右键菜单中,点击“Run Code”

然后我们可以看到在项目目录下生成了main.exe。

在Vscode的终端中可以看到输出了我们代码中的内容(下图中的"4"是为了让代码中的getchar()能执行下去)

注意:在Vscode中编译C++程序是有局限性的,而且经常会导致各种各样的问题,所以我们一般在cmd或者linux的终端中通过命令行或者makefile编译好程序,再通过Vscode调试。

五、通过GDB调试程序

运行 -> 启动调试。选择C++(GDB/LLDB)-> g++.exe

可以看到执行上述操作后生成了launch.json

我们得对里面的一些配置(主要就是下面的三个参数)进行修改。为了避免出错,都改成绝对路径。其中:

program:调试入口文件的地址

cwd:程序启动调试的目录

miDebuggerPath:调试器的路径

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe - 生成和调试活动文件",
            "type": "cppdbg",
            "request": "launch",
            "program": "D:\\Demo\\test\\gdb\\Test1A\\main.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "D:\\Demo\\test\\gdb\\Test1A",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\SoftWare\\TDM-GCC-64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                },
                {
                    "description": "将反汇编风格设置为 Intel",
                    "text": "-gdb-set disassembly-flavor intel",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "C/C++: g++.exe 生成活动文件"
        }
    ]
}

在main.cpp中设置断点,重新按F5

可以看到可以调试了

注意:如果设置断点后,调试出现报错:Module containing this breakpoint has not yet loaded or the breakpoint address not be obtained。 

则要手动在控制台中添加-g选项编译程序(这也是在Vscode中编译C++程序的局限性之一)

六、参考

《windows 10上使用vscode编译运行和调试C/C++》

举报

相关推荐

0 条评论