CGDB是GDB的前端,地址是https://cgdb.github.io/,基于ncurse,可以让用户用图形化的方式去调试代码,非常方便。

虽然GDB的TUI模式也是图形化,但是很容易产生撕裂现象,需要redraw,用起来难受,而且没有语法高亮。

本文主要讲述CGDB一些常用的使用方法。


一 安装

本人使用的Linux系统是Debian10 64位,Ubuntu也差不多。

去官网下载Stable版本,或者去其github地址下载release版本,本文写作时当前Stable版本为0.7.1
在这里插入图片描述
下载下来后解压,cd到源码目录,然后执行下面命令

sudo apt install automake
sudo apt install ncurses-devel
sudo apt install flex
sudo apt install texinfo
sudo apt install libreadline-dev

然后执行configure,

./configure

如果缺少依赖库,configure命令会在最后进行提示,可以根据提示自行安装。
configure没有问题之后,执行编译和安装,

make
sudo make install

如果是从Github上下载下来的,解压后要先执行autogen.sh去生成configure文件,后面都是一样操作了,具体可以参阅源码里的Readme.md文件


二 使用

首先准备一个代码工程,如下,
在这里插入图片描述
main.c内容如下,


#include <stdio.h>

#include "func.h"

int main(void)
{
    int aa = 100;
    int bb = 200;
    
    int cc = func(aa+bb);
    
    printf("cc: %d\n", cc);
    
    return 0;
}

func.h内容如下,

#ifndef FUNC_H_
#define FUNC_H_

int func(int data);

#endif

func.c内容如下,



int func(int data)
{
    int newData = data+500;
    return newData;
}

CMakeLists.txt内容如下,

cmake_minimum_required (VERSION 3.5)

project (demo)

add_executable(main src/main.c src/func.c)

然后cd到build目录下,执行下列语句生成debug版本的程序,

cmake -DCMAKE_BUILD_TYPE=Debug .. && make

然后在build目录下执行cgdb,

cgdb main      #如果有参数,则是 cgdb --args main xx,与gdb一样

出现如下窗口,
在这里插入图片描述
中间一道分割条,分割条中显式当前打开的文件名。
分割条上面是Source窗口,按Esc键进入Source窗口;分割条下面是GDB窗口,按“i”进入GDB窗口。

在Source窗口中,可以按上下键逐行查看,或者page up/down翻页查看,当前光标所在行会有一个block进行提示,
在这里插入图片描述

调整这2个窗口的占比,首先按下esc,然后使用“+”和“-”来调整。

常规用法

进入GDB窗口后,所有指令都是和gdb一样的,输入b main在main函数设置断点,然后输入r回车,开始运行,gdb相关的调试指令参考这篇文章,不再赘述

假如我们想打开func.c,然后在里面设置个断点,该怎样做呢?首先按Esc进入Source窗口,然后按o打开源码列表,此时出现的窗口叫文件浏览窗口,
在这里插入图片描述
按上下键选择需要的文件,如果文件太多,按/,然后输入文件名来查找。找到文件后,回车打开,
在这里插入图片描述

例如想在第5行打个断点,先将光标移动到第5行,然后按空格,断点就会打上,再按一次空格就会删除这个断点;或者按i进入GDB窗口,然后输入b 5回车,
在这里插入图片描述
第5行就会变成红色,表示断点已经打上了。如果源文件里代码,需要进行查找,先按Esc进入Source窗口,然后输入/,最后输入关键字就可以查找和定位了,还可以按n进行查找下一个,按N查找上一个。

按Esc回到Souece窗口,按o打开文件列表,然后打开main.c回到开始的地方,输入‘c’运行,就可以运行到func()里的断点位置了,执行到的当前位置使用一个长箭头进行指示。
在这里插入图片描述
PS:程序执行的位置和光标指示的位置2者意思是不一样的。


三 配置cgdb

cgdb使用一个叫cgdbrc的文件来进行配置,cgdb启动时会去读取这个文件,这样就可以把我们喜欢的配置保存到这个文件里。

例如Source窗口中的光标提示默认是一个block,我们想改成highlight,即点亮一整行,那么就可以在cgdbrc里输入下面的语句,

set selectedlinedisplay=highlight

首先使用vim打开这个文件,如果这个文件不存在就会自动创建,

vim ~/.cgdb/cgdbrc

然后把上面那句话写入到打开的cgdbrc里,接着source一下,

source ~/.cgdb/cgdbrc

然后使用cgdb去调试main,可以看到已经变成我们想要的了。
在这里插入图片描述
其它配置参数可以参考cgdb文档第4节CGDB configuration commands。


四 常用快捷键

进入Source窗口后可以使用以下快捷键进行debug,
在这里插入图片描述
其它可以参考cgdb文件第3.1节 Commands available during CGDB mode

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐