Linux下gdb详细调试教程

GDB调试教程

Step 1 生成包含调试信息的源文件

g++ Demo.cpp -o Demo_gdb -L ./shareLibrary/ -lTools -g

注意:需要加-g参数

Step 2 启动调试

gdb Demo_gdb

Step 3 设置参数信息

程序运行时,设置参数的方式

./Demo_gdb /path/log 8888

调试时,设置参数的方式

set args /path/log 8888

Step 4 gdb调试常用命令

  1. 查看代码

    list 或 l      	   //默认查看10行
    set listsize rows   //可以指定要查看的行数
    list num            //查看第num行
    
  2. 添加、取消、查看断点

    //1 设置断点
    break 20 //或者 b 20
    
    //2 查看端点
    info b
    //查看结果
    Num     Type           Disp Enb Address            What
    1       breakpoint     keep y   0x0000000000401051 in main() at Demo.cpp:10
    2       breakpoint     keep y   0x0000000000401084 in main() at Demo.cpp:20
    3       breakpoint     keep n   0x0000000000401137 in main() at Demo.cpp:30
    
    //3 禁用断点
    disable b Num
    
    //4 删除断点
    delete breakpoints Num
    
    
  3. 运行

    run 或 r
    
  4. 下一步

    next 或 n //不会进入函数内部,相当于F10
    
  5. 下一步

    step 或 s //进入函数内部,相当于F11
    
  6. 显示变量

    print 或 p  //只显示一次,它还可以执行变量表达式
    
    display args //长显
    
    //当前设置长显得变量
    (gdb) info display 
    Auto-display expressions now in effect:
    Num Enb Expression
    2:   y  order
    3:   y  a
    4:   y  b
    
    delete display Num //取消长显
    
  7. 继续执行

    continue 或 c
    
  8. 手工设置变量得值

    set var order = 1;
    

扩展(段错误)

首先,查看一下,当前用户有没有设置生成报错文件Core

ulimit -a

test@test:~/vscodeProject/src$ ulimit -a
core file size          (blocks, -c) 0          //用于生成报错文件
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15587
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65536
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 15587
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

然后设置无限制

test@test:~/vscodeProject/src$ ulimit -c unlimited
test@test:~/vscodeProject/src$ ulimit -a
core file size          (blocks, -c) unlimited
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 15587
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 65536
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 15587
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

然后使用gdb调试

gdb Demo_gdb core.8227

可以调用函数栈

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值