VSCODE调试多个在不同文件目录下的源文件

以c++为例,在D:\Code\test2工作目录有以下文件:

879f05e4699e407cb57869d5bcfbbdfc.png


test.cc

#include <iostream>

#include "1\test1.h"
#include "2\test2.h"

using namespace std;

int main()
{
    test1();
    test2();
    
    return 0;
}

test1.h

class t1
{
public:
    t1(){};
    virtual void f1();
};

test1.cc

#include <iostream>
#include "test1.h"

using namespace std;

void t1::f1()
{
    cout << "f1" << endl;
}

test2.h

class t2
{
public:
    virtual void f2();
};

test2.cc

#include <iostream>
#include "test2.h"

using namespace std;

void t2::f2()
{
    cout << "f2" << endl;
}

tasks.json

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "echo",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "${workspaceFolder}\\*.cc",
                "-o",
                "${fileBasenameNoExtension}.exe",
                "-fexec-charset=GBK"
            ]
        },
    ],
}

此时运行是有问题的,终端显示undefined reference to `vtable for t2',undefined reference to `vtable for t1'.

这是因为在运行源文件时并没有同时编译task1.cc和task2.cc,那么头文件类中的函数都是未被定义的函数

将tasks.json修改如下:

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "echo",
            "type": "shell",
            "command": "g++",
            "args": [
                "-g",
                "${workspaceFolder}\\*.cc",
                "-g",
                "${workspaceFolder}\\1\\*.cc",
                "-g",
                "${workspaceFolder}\\2\\*.cc",
                "-o",
                "${fileBasenameNoExtension}.exe",
                "-fexec-charset=GBK"
            ]
        },
    ],
}

修改后每次运行就相当于在终端输入g++ -g D:\Code\test2\*.cc -g D:\Code\test2\1\*.cc -g D:\Code\test2\2\*.cc -o test.exe -fexec-charset=GBK 

每次运行时都会调试这三个文件目录下的.cc程序,其中-g 包括编译和链接两个步骤,并且在调试时生成调试信息 -o 指定输出文件名,*.cc表示上级文件目录下所有.cc文件,-g编译链接了三个源文件之后就可以运行了

同理,每有一个在不同目录下的文件就在后面添加"-g" "${workspaceFolder}\\(文件夹)\\*.cc"(workspaceFolder就是工作区文件夹)

如果要用到其他盘的文件夹或是包含源文件的文件夹在多个不同文件目录里,可以将该文件夹添加到工作区(在资源管理器里找到文件或文件夹,拖动到vscode资源管理器侧边栏,然后选择添加到工作区)

最后按上述方法添加即可。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在VS Code中调试大型C项目,可以按照以下步骤进行设置: 1. 安装C/C++扩展: 打开VS Code,点击左侧的扩展图标(四个方块组成的图标),搜索并安装"C/C++"扩展。这个扩展提供了C/C++的语法高亮、代码补全和调试功能。 2. 配置调试器: 点击左侧的调试图标(类似于虫子的图标),然后点击顶部的齿轮图标,选择"C++ (GDB/LLDB)"作为调试器。如果你没有安装GDB或LLDB,请先安装它们。 3. 创建launch.json文件: 点击调试面板右上角的绿色三角形按钮,选择"创建一个配置文件",然后选择"C++ (GDB/LLDB)"。这将在.vscode目录下创建一个launch.json文件,用于配置调试器。 4. 配置launch.json: 在launch.json文件中,你可以设置编译器路径、工作目录、源代码路径等。你需要根据你的项目结构和编译方式进行相应的配置。例如,你可以设置"program"字段为可执行文件的路径,设置"cwd"字段为工作目录的路径。 5. 设置断点: 打开你的C源文件,在你希望暂停程序执行的地方点击左侧的行号,创建断点。你可以创建多个断点来跟踪程序的执行。 6. 启动调试: 点击调试面板左上角的绿色三角形按钮,选择你要调试的配置,然后点击启动按钮。这将编译你的代码并启动调试会话。当程序执行到断点处时,程序将暂停,并且你可以查看变量的值和调用堆栈等信息。 通过以上步骤,你就可以在VS Code中调试大型C项目了。记得在调试之前确保你的代码是可编译并且没有语法错误。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值