嵌入式系统中使用CGDB进行调试

6 篇文章 0 订阅
3 篇文章 0 订阅

对cgdb不熟悉的可从cgdb的官方网站了解。

在gdb下调试看源码太不方便了,虽然有个-tui模式,也没法跟有语法加亮功能的cgdb相比。

原本打算修改配置来让cgdb启动不同的gdb,没找到资料,只好去看它的源码。

CGDB调用GDB的代码在路径:./various/util/src/fork_util.c中,由函数invoke_debugger实现


int invoke_debugger(
            const char *path, 
            int argc, char *argv[], 
            int *in, int *out, 
            int choice, char *filename) 
{
    pid_t pid;    
    //将GDB变量修改为系统中为目标系统编译好的GDB的名称,如arm-linux-gdb
    const char * const GDB               = "arm-linux-gdb";
    const char * const NW                = "--nw";
    const char * const X                 = "-x";
    const char * const ANNOTATE_TWO      = "--annotate=2";
    const char * const GDBMI             = "-i=mi2";
    char *F                              = filename;
    char **local_argv;
    int i, j = 0, extra = 6;
    int malloc_size = argc + extra;
    char slavename[64];
    int masterfd;

配置:

我的开发板对应的gdb编译后安装路径为/usr/local/arm-gdb,希望运行cgdb-arm-linux 以便于主机系统的cgdb命令区分

./configure --prefix=/usr/local/arm-gdb/ --program-suffix=-arm-linux 

make -k -j 4 //虚拟机配置了2个cpu,设置4线程编译

make install

下面就是使用cgdb与gdbserver配合调试的截图,看起来是不是很舒服?


(免费版给打了3个水印,太过份了,这个hypersnap真是不地道啊)

关于gdb、gdbserver的编译使用网上有一大堆的例子。需要注意的是如果出现找不到头文件的问题不能采用

手动指定系统包含目录的方式,因为开发板系统跟主机系统的头文件不能互用,要修改生成的config.h文件。

注释掉不使用的特性。建议最好使用开发板自带的gdb源码来编译,否则出现的问题仅仅修改config.h文件可能解决不了。

(PS: 今天闲来无事,打了个man cgdb,结果发现使用-d 参数就可以设置目标GDB[而且还是在这个日子发现的2016-04-01])


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值