cgdb 调试_嵌入式系统中使用CGDB进行调试 | 学步园

对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文件可能解决不了。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值