当前位置: 首页 > article >正文

linux下coredump文件产生及分析

linux下coredump文件产生及分析

        • 前言
        • 如何产生coredump文件
          • 如何设置永久生效
          • 修改coredump路径及文件名
        • 对coredump文件进行分析

前言

cordump是程序崩溃时产生的包含一些堆栈,寄存器信息的文件。windows下如何捕获并分析已做说明,在此只做linux下的说明

如何产生coredump文件

通过ulimit -c查看coredump文件大小限制,一般为0,表示不产生coredump文件,我们需要使用ulimit -c unlimited解除限制,但当关了终端后又会恢复为0

如何设置永久生效

以下修改只对当前用户永久生效
vim ~/.bashrc
在文件末尾追加
ulimit -c unlimited
保存文件后使其立刻生效
source ~/.bashrc

修改coredump路径及文件名

coredump默认产生在程序执行目录,但是当在程序中修改执行路径后会导致在可执行文件路径找不到
su root
echo /path/to/coredump.%e.%p > /proc/sys/kernel/core_pattern

%p - 插入当前的pid
%u - 插入当前的uid
%g - 插入当前的gid
%s - 插入导致产生core文件的信号
%t - 插入core文件生成时的时间
%h - 插入主机名
%e - 插入程序名

对coredump文件进行分析

通过一段代码来演示如何分析

void gen_coredump()
{
    int *ptr = nullptr;
    *ptr = 0;
}

int main(int argc, char **argv)
{
    gen_coredump();
   
    return 0;
}

g++ main.cc -o main -std=c++11 -O0 -m64
执行./main后会产生一个文件名为coredump.main.4110的coredump文件
使用gdb进行分析
gdb ./main
(gdb) core-file coredump.main.4110
gdb) bt
在这里插入图片描述


http://www.kler.cn/a/254.html

相关文章:

  • [微服务]redis主从集群搭建与优化
  • web实操9——session
  • Debian、Ubuntu 22.04和ubuntu 24.04国内镜像源(包括 docker 源)
  • 【LC】2469. 温度转换
  • CSS 之 position 定位属性详解
  • Linux运维相关基础知识(二)
  • 真1分钟搞懂缓存穿透、缓存击穿、缓存雪崩
  • 我从功能测试到python接口自动化测试涨到22k,谁知道我经历了什么......
  • 彻底搞懂nodejs事件循环
  • ChatGPT告诉你:项目管理能干到60岁吗?
  • 对于从事芯片行业的人来说,有哪些知识是需要储备的?
  • MySQL数据同步到 Redis 缓存的几种方法
  • python学习——【第四弹】
  • Jenkins自动化部署入门
  • 手机解锁方法:8个顶级的 Android 手机解锁软件
  • 邂逅多线程:Java多线程编程
  • 一个古老的html后台的模板代码
  • 如何在CSDN中使用ChatGPT
  • 求职(怎么才算精通JAVA开发)
  • 【AcWing】蓝桥杯备赛-深度优先搜索-dfs(3)
  • 为什么程序员喜欢这些键盘?
  • iOS XML数据解析
  • Linux系统搭建FTP服务器
  • Springboot是什么
  • 2022-2-23作业
  • 蓝桥杯刷题第六天