【gdb】24.gdb调试和coredump

52 篇文章 15 订阅
12 篇文章 1 订阅

gdb调试和coredump

下面一行命令是用来gdb调试的一种方式

gdb --args     binary_node    --flagfile=conf/xx.conf
r   #run

或者分两步执行:

gdb binary_node
#下面这句是在进入gdb之后执行
set args --flagfile=conf/xx.conf
r   #run

下面一行命令是利用coredump文件来gdb调试的一种方式:

gdb  binary_node          xxx.core

参考网址:

https://baijiahao.baidu.com/s?id=1599347824327158577
https://www.jianshu.com/p/e38a3f1cf7f7
https://www.pianshen.com/article/2260634841/


ulimit -c 如果返回值是 0,则表示 core dump 已被禁用。其他数字表示 core dump 文件的最大大小(以 KB 为单位),或者 unlimited 表示没有限制。
ulimit -c unlimited # 可以产生core且不受大小限制
sudo sysctl -w kernel.core_pattern=/tmp/core-%e.%p.%h.%t #生成的core文件存放在/tmp目录下
上面%t是写成时间戳的形式,这个时间戳是程序挂掉时的时间戳。

也可以写成年月日时分秒的形式,但是存的coredump是下面这条shell命令执行时候的时间,并不是程序挂掉时的时间,所以不推荐:
sudo sysctl -w kernel.core_pattern=/tmp/core.%e.%p.%h.$(date +'%Y%m%d%H%M%S') #生成的core文件存放在/tmp目录下
注意,修改 ulimit 的设置通常只对当前会话框有效,另开一个终端就会失效。

几个常用的gdb命令

btwhere 可以定位到出现问题的函数

l(list) 显示源代码,并且可以看到对应的行号;

b(break)x x是行号,表示在对应的行号位置设置断点;

p(print)x x是变量名,表示打印变量x的值

r(run) 表示继续执行到断点的位置

n(next) 表示执行下一步

c(continue) 表示继续执行

q(quit) 表示退出gdb

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值