gdb调试命令大全

用惯了cmake IDE,基本上忘记了gdb的常用命令,但是老的项目用Makefile维护的,只能在dev env进行调试,完全靠printf效率极低,复习并分享下gdb命令,发现网上的资料相当少,质量也不高。

  1. 准备

代码文件

TestDbg.cpp

内容如下

//

// Created by laven.xu on 2021/12/2.

//

#include <iostream>

#include <cstdio>

int sum();

int main(int argc, char * argv[]) {

printf("----- hello ------\n");

int sumRet = sum();

//---------------------------------------------------

printf("sumRet = %d\n", sumRet);

return 0;

}

int sum()

{

int sum = 0;

for (int j = 0; j < 100; j++)

{

sum += j;

}

return sum;

}

编译 g++ -g -o test TestDbg.cpp

杀死进程 ps -ef|grep test |grep -v grep| cut -c 9-16 | xargs sudo kill -9

  1. 调试

下文命令基本按照使用习惯进行排序分类

+++

运行

run

会直接打印结果,没有任何断点阻塞

+++

打断点

b TestDbg.cpp:13

b funcname

++++

首次运行可以传参

(gdb) run boy girl

Starting program: /home/dev/test/test boy girl

show args看传入的参数列表

+++++

Reading symbols from /home/dev/test/test...done.

(gdb) b TestDbg.cpp:14

Breakpoint 1 at 0x400799: file TestDbg.cpp, line 14.

(gdb) r

Starting program: /home/dev/test/test

----- hello ------

//断点已生效

Breakpoint 1, main (argc=1, argv=0x7fffffffe308) at TestDbg.cpp:14

13 int sumRet = sum()

++++

list

默认上五行下五行

list 行数

list start,end

++

进入函数内部

step

执行完本函数并退出

finish

return value

停止当前函数并返回调用者

+++

c

继续运行

单步执行

n

+++

watch

(gdb) watch sum

Hardware watchpoint 2: sum

(gdb) c

Continuing.

Hardware watchpoint 2: sum

Old value = 3

New value = 6

main (argc=1, argv=0x7fffffffe308) at TestDbg.cpp:12

12 for (int j = 0; j < 100; j++)

(gdb) print j

$8 = 3

+++

print j

$6 = 3

(gdb) print sum

$7 =

+++

info func、files

info local 显示局部变量

(gdb) info b

Num Type Disp Enb Address What

1 breakpoint keep y 0x0000000000400799 in main(int, char**) at TestDbg.cpp:14

breakpoint already hit 8 times

2 hw watchpoint keep y sum

breakpoint already hit 2 times

++++

(gdb)

disable 第几个断点

delete 第几个断点

++++

(gdb) ptype

显示定义类型

+++

设置局部变量

(gdb) set j=12

“乐分享从我做起!改变自己!!方便他人!!!”,如果你觉得有帮忙请点赞收藏,同时也欢迎您再评论区交流!-- Thanks, Laven

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值