linux 段错误跟踪-gdb&core dump

使用场景

当使用之前介绍的addr2line工具无法定位时,如程序崩溃在动态库处,此时就可使用gdb分析core dump文件定位问题。

core dmup

简介

core dump 又叫核心转储,是一个程序运行时的环境一个集合包,包含崩溃时的堆栈信息,是一个二进制文件,无法使用记事本打开,一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象,主要用来调试。

使用

  1. 查看开启状态
    ulimit -c
    0 关闭
    unlimited 未限制大小
    状态查询
  2. 设置单个文件大小
    ulimit -c 文件大小
    ulimit -c 1024 1024k
    ulimit -c unlimited 大小未限制
    ulimit -c 0 关闭
    在这里插入图片描述
  3. 指定core dump文件的生成路径

系统默认的core文件生成路径是/var/logs,但/var/logs目录并非系统自带的,系统初始安装默认自带的是/var/log,最终导致该系统出现core
dump后并没能生成core文件。指定core dump文件存在/dump/目录下,格式自定义

echo ‘/dump/core-%e-%p-%t’ > /proc/sys/kernel/core_pattern
more /proc/sys/kernel/core_pattern
如果这样还是没有生成core文件,建议不设置路径,选用默认路径为可执行程序相同目录
echo ‘core-%e-%p-%t’ > /proc/sys/kernel/core_pattern
在这里插入图片描述

gdb 定位崩溃处

gdb 指令分析core dump文件

gdb格式如下:
gdb [exec file] [core file]
[exec file]表示之前使用gcc编译的程序
[core file]表示之前产生的dump文件

如下图所示崩溃在core_dump.c 文件的第7行
在这里插入图片描述

gdb 调试指令

  1. bt
    命令用于获取当前线程的函数调用堆栈信息。
    它会显示当前线程中函数调用的序列,从当前位置回溯到程序的入口点。
  2. disass
    反汇编
    在这里插入图片描述
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值