linuxc成长之路-使用vscode调试c程序

为了更好的打开linuxc的大门,除了借助好的IDE外,还需要各种各样的利器提高效率。其中调试在我整个开发工作中占据非常非常重要的地位,要是没有调试我绝对会哭。以下记录一下我在vscode配置调试的相关操作。

一、安装cpptools

这个没什么好说的,直接在vscode安装一下这个插件就可以了。实在不会可以百度一下

二、编写launch.json

安装完后,按下F5快捷键启动调试,IDE会告诉你需要编写一个叫launch.json,现在简单说一下这个文件:

{  
    "version": "0.2.0",  
    "configurations": [  
        
        {  
            "name": "(gdb) Launch",  
            "type": "cppdbg",  
            "request": "launch",  
            "program": "${workspaceRoot}/oo",  
            "args": [],  
            "cwd": "${workspaceRoot}",  
            "environment": [],  
            "externalConsole": true,  
            "preLaunchTask": "oo",  
            "linux": {  
                "miDebuggerPath": "/usr/bin/gdb",  
                "MIMode": "gdb",  
                "setupCommands": [  
                    {  
                        "description": "Enable pretty-printing for gdb",  
                        "text": "-enable-pretty-printing",  
                        "ignoreFailures": true  
                    }  
                ]  
            },  
            "osx": {  
                "MIMode": "lldb"  
            },  
            "windows": {  
                "miDebuggerPath": "D:/MinGW/bin/gdb.exe",  
                "MIMode": "gdb",  
                "setupCommands": [  
                    {  
                        "description": "Enable pretty-printing for gdb",  
                        "text": "-enable-pretty-printing",  
                        "ignoreFailures": true  
                    }  
                ]  
            }  
        }  
    ]  
} 

这里主要修改的内容主要有两个参数:

program,${workspaceRoot}/oo表示你要调试的程序

preLaunchTask,表示启动调试前的任务,目的启动前先进行编译并生成执行程序

三、编写tasks.json

继续按F5启动调试,IDE会告诉你缺少tasks任务,意思是调试过程要执行哪些任务。这里也是简单说明一下tasks.json。

{  
    "version": "0.1.0",  
    "command": "make",  
    "showOutput": "always",
    "args": [  
    ],  
    "tasks": [
        {
            "taskName": "clean"
        },
        {
            "taskName": "oo",
            "problemMatcher": {
                "owner": "cpp",
                "fileLocation":  ["relative", "${workspaceRoot}"],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        }
    ],
}  

"command":"make"是执行makefile的命令

"taskName":"oo"这里就是之前preLaunchTask定义的任务

四、编写makefile

CFLAGS = -g
objects=oo.o base/source/log.o \
util/file/source/file_operator.o \
util/file/source/ufile_operator.o
oo : $(objects)
	cc -o $@ $^
..c.o:
	cc $(CFLAGS) -c  $<
.PHONY : clean
clean :
	-rm -rf $(objects)

这里记录要加-g参数,不然不能命中断点。现在按F5就可以直接进入调试,效果如下图


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值