vscode远程连接ubuntu开发并进行c++的gdb调试

咱就是说,gdb手动调试不太直观,cmake又没来得及学!!!

正常来说都是win系统下vscode连接ubuntu来进行开发,而在vscode中配置调试文件总是不成功,尤其是有makefile的情况下,捣鼓很久加参考大神,终于搞好,以下仅作为配置记录

 调用调试的时候会自动创建这两个文件,如果没有就手动创建即可

先介绍我的文件构造,工作文件目录为/home/knight/PCM2AAC,而我的可执行文件名为pcm2aac,且我希望能够调用自己写的makefile 来进行编译,并且希望给main传参

PCM2AAC
├── bin
│   ├── jpg_pcm_open_48000hz
│   ├── jpg_pcm_open_48000hz.aac
│   └── jpg_pcm_open_48000hz.pcm
├── include
│   ├── faaccfg.h
│   └── faac.h
├── lib
│   ├── libfaac.a
│   ├── libfaac.la
│   ├── libfaac.so
│   ├── libfaac.so.0
│   └── libfaac.so.0.0.0
├── main.c
├── Makefile
└── pcm2aac

第一步配置tasks.json文件如下:

此文件会完成编译的过程;

重要的就是里面的路径,如果把握不准就建议都直接改成绝对路径

//tasks.json

{
	"version": "2.0.0",
	"tasks": [
        {
            "type": "cppbuild",
            "label": "g++",   // 任务名称,与launch.json的preLaunchTask相对应

            //使用makefile编译的情况:
            "command": "make",  //命令,与在终端编译的参数一样
            "args": [],

            // //使用g++编译的情况,这里面的workspaceFolder最好也改成绝对路径
            // "command": "g++",  //命令,与在终端编译的参数一样
            // "args": [
            //     "-g",
            //     "${workspaceFolder}/*.cpp",
            //     "${workspaceFolder}/src/*.cpp",
            //     "-o",
            //     "${workspaceFolder}/test",  //输出的可执行文件可以不要后缀名,为了方便:)
            //     "-I",        //指定头文件路径
            //     "${workspaceFolder}/include"
            // ],
            "options": {
                // 设置 make 命令的工作目录为 PCM2AAC 文件夹
                "cwd": "/home/knight/PCM2AAC"  
            }
        }
    ]
}

 接着配置launch.json文件

同样的里面的路径最好都写成绝对路径,如果和我一样需要传参的就把需要传递的命令写在args[];

//launch.json

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            // 配置名称,将会在启动配置的下拉菜单中显示 
           "name": "PCM2AAC build", 
            //"name": "AAC2PCM build",  
            "type": "cppdbg", // 配置类型,这里只能为cppdbg
            "request": "launch", // 请求配置类型,可以为launch(启动)或attach(附加)
           // 将要进行调试的程序的路径,在linux中文件的后缀名不是那么重要,这里可以不添加,但要与tasks.json的输出一致
            "program": "/home/knight/PCM2AAC/pcm2aac", 
            "args": [
                "./pcm2aac --h",
             // "./pcm2aac --help",
             //  "./pcm2aac -i ./bin/jpg_pcm_open_48000hz.pcm -r 48000 -b 16 -c 2 -o ./bin/jpg_pcm_open_48000hz.aac",
             //  "./pcm2aac --input_pcmfile=./bin/jpg_pcm_open_48000hz.pcm --sample_rate=48000 --sample_bits=16 --channels=2 --output_aacfile=./bin/jpg_pcm_open_48000hz.aac"
           ],   // 程序调试时传递给程序的命令行参数,一般设为空即可
           

            "stopAtEntry": false,   // 设为true时程序将暂停在程序入口处
            // 调试程序时的工作目录,在当前的工作路径即可,总之还是要与tasks.json的配置一致
           "cwd": "/home/knight/PCM2AAC",  
            //"cwd": "/home/knight/AAC2PCM",  
            "environment": [],

            //注意,如果是远程连接linux调试,一定要用false:
            "externalConsole": false,    // 调试时是否显示控制台窗口,一般设置为true显示控制台

            "MIMode": "gdb",// 指定连接的调试器,可以为gdb或lldb。
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "g++",   // 调试会话开始前执行的任务,一般为编译程序。与tasks.json的taskName相对应
            "miDebuggerPath": "/usr/bin/gdb" // 调试器路径。
        }
    ]
}

如果需要调试不同的项目,把里面的路径以及可执行文件进行对应的替换就可以了。

参考:vscode远程连接ubuntu使用gdb调试C++代码_vscode gdb远程调试c++程序没有进入断点-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值