gdb coredump概述

41 篇文章 2 订阅

gdb coredump

进程崩溃的时候,coredump文件会将进程的内存映像以及寄存器、堆栈指针等信息保存下来以便使用gdb 调试分析。


1. coredump文件生成开关

ulimit -c

0 代表 关闭coredump文件生成开关。可通过ulimit -c filesize/unlimited进行设置,其中filesize设置过小,使用gdb调试相应的coredump文件时会出错;


2. coredump文件生成路径

/proc/sys/kernel/下三个core_开头的文件

(1) /proc/sys/kernel/core_uses_pid

可以控制core文件的文件名中是否添加pid作为扩展 文件内容为1,表示添加pid作为扩展名,生成的core文件格式为core.xxxx;为0则表示生成的core文件同一命名为core。

(2) /proc/sys/kernel/core_pattern

可以控制core文件保存位置和文件名格式,可通过以下命令修改此文件:

echo "/corefile/core-%e-%p-%t" > core_pattern

可以将core文件统一生成到/corefile目录下,产生的文件名为core-命令名-pid-时间戳 以下是参数列表:

%p - insert pid into filename 添加pid
%u - insert current uid into filename 添加当前uid
%g - insert current gid into filename 添加当前gid
%s - insert signal that caused the coredump into the filename 添加导致产生core的信号
%t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
%h - insert hostname where the coredump happened into filename 添加主机名
%e - insert coredumping executable name into filename 添加命令名

3. objcopy

程序一般编译好,发布的时候使用去掉符号的程序. strip –strip-unneeded  app_all app_name 我们发布使用app_name无符号的版本 调试的时候我们需要把符号保存一下.供gdb加载 objcopy –only-keep-debug app_name app.symbol 把程序app_name 的符号copy到app.symbol文件中

4. gdb

调试无符号版本

gdb -c core.xxxx app_name 然后加载符号

(1)  gdb使用dump文件运行程序,获取崩溃堆栈信息

gdb -c core.xxxx app_name

(2) 加载符号

symbol-file app.symbol

Reading symbols from app.symbol…done.

(3) 查看堆栈信息

bt 现在就可以定位到程序崩溃到代码的哪一行了

或者直接调试带符号版本

gdb -c core.xxxx app_all 调试带符号版本

 

 

 

注:

NeoKylin Linux Server 7.0 /ubuntu

会在Kill时产生dump文件.或者在throw时产生dump文件

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值