Coredump(tracedump)

引言当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中(core文件),这种行为就叫做CoreDump或者叫做‘核心转储’,利用coredump可以帮助我们快速定位程序崩溃位置开启coredump终端输入命令:ulimit-a用来显示对进程的一些限制限制,其中第一行表示了core文件最大的大小限制(单位为blocks)默认是…

大家好,又见面了,我是你们的朋友全栈君。

引言

当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中(core文件),这种行为就叫做 Core Dump 或者叫做 ‘核心转储’,利用 coredump 可以帮助我们快速定位程序崩溃位置

开启 coredump

终端输入命令:ulimit -a 用来显示对进程的一些限制限制,其中第一行表示了 core 文件最大的大小限制(单位为 blocks)默认是 0
在这里插入图片描述

开启核心转储
终端输入:ulimit -c unlimited 不对生成的核心转储文件进行大小限制也可以指定大小,ulimit -c 查看
在这里插入图片描述

gdb 调试 core 文件

准备:

#include <cstdio>

int test1(int a, int b) { 
   
    return a+b;
}
void test2() { 
   
    char* str = "hello~";
    str[0] = '0'; //段错误程序终止,生成core文件
}
void test3() { 
   
    printf("world~~\n");
}

int main() { 
   
    test1(1, 2);
    test2();
    test3();

    return 0;
}

./test 执行文件后 发生段错误程序终止,并且生成 core 文件
在这里插入图片描述
file core.22187 查看文件信息
在这里插入图片描述

gdb ./test core.22187 利用 gdb 进行 coredump 定位,可以看到程序终止是因为signal 11 并且段错误发生在第 15 行,因为 str[0] = ‘0’
在这里插入图片描述

开始调试:在 15 行发生段错误,信号 SIGSEGV 导致程序终止
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/128540.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 一致性Hash算法以及java实现「建议收藏」

    一致性Hash算法以及java实现「建议收藏」目前我们很多时候都是在做分布式系统,但是我们需把客户端的请求均匀的分布到N个服务器中,一般我们可以考虑通过Object的HashCodeHash%N,通过取余,将客户端的请求分布到不同的的服务端。但是在分布式集群中我们通常需要添加或删除服务器,所以通过取余是不行的。一致性Hash就是为了解决这个问题。  ConsistentHashing一致性Hash的原理  1、环型Hash空间…

  • mysql shell创建数据库_mysql怎么建立数据库

    mysql shell创建数据库_mysql怎么建立数据库#!/bin/shSHELL_NAME=GetTabStript.sh/bin/rm-fCreateTable.sql/bin/rm-ftmp.sql##获取数据库用户名、密码、实例,属主,表名称列表信息;执行格式如下:##指定表:shGetTabStript.sh”dbrwdadm””dbrwdadm””chnrwd””DBRWDADM””DCUSTMSGSCHNKPI”…

  • vbs代码弹计算机,如何恶搞朋友的电脑?超简单的vbs代码

    vbs代码弹计算机,如何恶搞朋友的电脑?超简单的vbs代码这东西不好做成视频教程,我们就做成文章出来分享吧!编写vbs有多简单?新建“文本文档”,输入msgbox”一大波病毒正在靠近…”,点击文件->另存为->重命名为“代码.vbs”。文件名不重要,重要的是后缀要是“.vbs”双击保存的文件:代码.vbs,即弹出一个对话框。记下这段小小的代码,去同学家里恶搞吧。当然你还可以输入其他有趣的文字。当然,如此恶搞还是不够的。那就来一个无限循…

  • Python画图[通俗易懂]

    Python画图[通俗易懂]帮别人实现rubberfriction的运算公式。公式不是我专业的内容,完全不懂,只是照着公式用python计算并画图。做出的图,与论文中的图进行对比,完全一致。之所以用python,是因为mat

  • 我是全网最硬核的高并发编程作者,CSDN最值得关注的博主,大家同意吗?(建议收藏)「建议收藏」

    我是全网最硬核的高并发编程作者,CSDN最值得关注的博主,大家同意吗?(建议收藏)「建议收藏」我是全网最硬核的高并发编程作者,CSDN最值得关注博主,全网最硬核的基于可视化的多数据源数据异构中间件作者,也许现在就是,也是不久的将来就是,大家同意吗?

  • vue-axios使用_vue接口请求放在哪里写

    vue-axios使用_vue接口请求放在哪里写什么是axiosAxios是一个基于promise的HTTP库,可以用在浏览器和node.js中。主要的作用:axios主要是用于向后台发起请求的,还有在请求中做更多是可控功能。a

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号