Coredump 详解

2023-11-02

引言

当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中(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 导致程序终止
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Coredump 详解 的相关文章

  • Linux 磁盘与文件系统管理(鸟哥私房菜)

    本文来自 http vbird dic ksu edu tw linux basic 0230filesystem php 第八章 Linux 磁盘与文件系统管理 系统管理员很重要的任务之一就是管理好自己的磁盘文件系统 每个分割槽不可太大也
  • CF、SF、OF、ZF标志位

    没学汇编 这种题我真是做一道错一道 OF overflow flag 溢出标志位 溢出标志位 OF 1 表示带符号整数运算时结果发生溢出 对于无符号整数运算 OF没有意义 对于有符号数的溢出判断方式有 1 采用一位符号位 思想为 或 则为溢
  • 安装黑苹果双系统专辑贴(持续更新...)

    最近终于开始研究黑苹果 然后浏览了几篇文章贴收集一下 以便需要时随时阅览 和同学们互相学习 零基础篇 1 https blog csdn net a792396951 article details 80230946 2 https zhu
  • Linux,Network manager 导致节点异常重启

    推断是Network manager 导致的 原因待查今天在VmWare的虚拟机上装了个测试RAC 又遇到了一个摸不到头绪的问题CRS装好后 一旦登陆图形界面 节点就重启 事情就有这么巧不登陆图形界面 观察了1个小时没问题 一旦登陆后 立刻
  • 《一个操作系统的实现》读书笔记-- 第一章--最小的“操作系统”

    一 最简单的 操作系统 最最简单的 操作系统 就是一个最最简单的引导扇区 Boot Sector 虽然它不具有任何功能 但是它却能够直接在裸机上运行 不依赖其他软件 一个引导扇区是512个字节 并且以0xAA55为结束标识的扇区 下面就是那
  • Windows运行常用命令(win+R)

    1 calc 启动计算器 2 notepad 打开记事本 3 write 写字板 4 mspaint 画图板 5 snippingtool 截图工具 支持无规则截图 6 mplayer2 简易widnows media player 7 S
  • Linux常用命令记录

    文章目录 1 软件安装 安装软件 来自源服务器 安装 deb软件 来自本地 deb文件 修复依赖关系 卸载软件 2 文件 文件夹操作 删除文件夹 移动文件 文件重命名 3 程序查看 处理 进程查看 查看端口占用情况 强制终止程序 4 解压文
  • Ubuntu9.04太多乱码(中文不能正常显示)

    最近在使用Ubuntu9 04的过程中 发现有好多地方都出现乱码 其实是中文不能正常显示 现在把我所遇到的所有乱码问题集中一下 方便以后查阅参考 一 Flash乱码 在终端输入 sudo gedit etc fonts conf d 49
  • 图解五种磁盘调度算法, FCFS, SSTF, SCAN, C-SCAN, LOOK

    一 FCFS 调度 先来先服务 磁盘调度的最简单形式当然是先来先服务 FCFS 算法 虽然这种算法比较公平 但是它通常并不提供最快的服务 例如 考虑一个磁盘队列 其 I O 请求块的柱面的顺序如下 98 183 37 122 14 124
  • CentOS Linux服务器安全设置

    转自 http www osyunwei com archives 754 html 引言 我们必须明白 最小的权限 最少的服务 最大的安全 所以 无论是配置任何服务器 我们都必须把不用的服务关闭 把系统权限设置到最小话 这样才能保证服务器
  • 如何快速构建CMBD系统-glpi

    脚本后续更新及迭代将由kkitDeploy项目代替 https github com luckman666 kkitdeploy server 请大家持续关注kkitDeploy 一 CMBD系统构建步骤 起初 开发这套CMBD系统是为了帮
  • C#实现FTP文件夹下载功能【转载】

    网上有很多FTP单个文件下载的方法 前段时间需要用到一个FTP文件夹下载的功能 于是找了下网上的相关资料结合MSDN实现了一段FTP文件夹下载的代码 实现的思路主要是通过遍历获得文件夹下的所有文件 当然 文件夹下可能仍然存在文件夹 这样就需
  • Common块和Bss段的区别

    昨天看 程序员的自我修养 链接 装载与库 发现不是很理解为什么要用common块 然后仔细看了一番 有了自己的理解 common块 用来存放弱符号 而全局未初始化变量是弱符号 但是难道不是应该存放在 bss段吗 为什么要有common块呢
  • 在 Linux 中使用 Core Dump 检查点/重新启动

    可以使用进程的核心转储来实现检查点 重启吗 核心文件包含进程的完整内存转储 因此理论上应该可以 将进程恢复到转储核心时的相同状态 是的 这是可能的 GNU Emacs 这样做是为了优化其启动时间 它加载一堆 Lisp 文件来生成图像 然后转
  • 我有一个可执行文件的核心转储,该可执行文件不是使用调试符号构建的。我可以恢复 argv 内容吗?

    我有一个可执行文件的核心转储 该可执行文件不是使用调试符号构建的 我可以恢复 argv 内容以查看命令行是什么吗 如果我运行 gdb 我可以看到回溯 并且可以导航到 main 框架 一旦到达那里 有没有办法在不知道其确切地址的情况下恢复 a
  • 递归导致的分段错误

    我正在编写一个程序 该程序将获取 1 10 之间的数字并显示排列数字的所有可能方式 前任 输入 3 输出 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 每当我输入 9 或 10 时 程序就会给出分段错误并转储核心
  • 是否可以获得正在运行的进程及其符号表的核心转储?

    是否可以获取 gdb 或使用其他一些工具来创建正在运行的进程及其符号表的核心转储 如果有一种方法可以在不终止进程的情况下执行此操作 那就太好了 如果可能的话 您会使用什么命令 我正在尝试在 Linux 机器上执行此操作 Or run gco
  • (Mac) 将核心文件保留在可执行文件所在的位置而不是 /cores?

    我最近发现 Mac 将所有核心文件保留在 cores 目录中 即使可能 也很难判断哪个应用程序导致了核心转储 不知道我是否可以配置系统以保留可执行文件所在的核心 就像在 Linux 中一样 谢谢 嗯 也许你可以编辑 etc sysctl c
  • C 程序如何在不终止的情况下生成自身的核心转储?

    我希望 C 程序在某些情况下生成核心转储 这是一个在生产环境中运行的程序 不容易停止并重新启动以调整其他类型的调试代码 另外 由于是在生产环境中 我不想调用 abort 正在调查的问题不容易在非生产环境中复制 我想要的是程序在检测到某些问题
  • 用于分析 Node.js 核心转储的工具 [已关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 如果我使用 gcore 制作 Node js 进程的代码转储 分析它的最佳工具是什么 灵感来自 jav

随机推荐

  • 蓝牙AVRCP协议解析

    在这里讨论蓝牙的AVRCP协议 要理解AVRCP 需要先了解AVCTP 我们分两个部分来进行 1 AVCTP协议 2 AVRCP协议 下面先来看AVRCp协议 一 概述 1 定义 AVCTP Audio Video Control Tran
  • Windows上VS2017单步调试FFmpeg源码的方法

    之前在https blog csdn net fengbingchun article details 90114411 介绍过如何在Windows7 10上通过MinGW方式编译FFmpeg 4 1 3源码生成库的步骤 那时只能生成最终的
  • Springboot集成 Druid

    文章目录 Druid介绍 一 Druid依赖选择 二 Druid配置 三 页面效果 三 配置原理 总结 Druid介绍 Druid是一个开源的数据库连接池和SQL查询优化工具 用于提高应用程序对数据库的性能和可扩展性 主要提供的功能 数据库
  • 淘宝精品服饰案例用JQuery实现

    淘宝精品服饰案例用JQuery实现 效果图如下 实现代码如下
  • STM32-HAL库06-硬件IIC驱动FM24CL16B非易失存储器

    STM32 HAL库06 IIC驱动FM24CL16B非易失存储器 一 所用材料 STM32VGT6自制控制板 STM32CUBEMX HAL库软件 MDK5 二 所学内容 通过HAL库的硬件IIC对FM24CL16B存储器进行写与读取操作
  • 【华为OD机试】快递运输【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 一辆运送快递的货车 运送的快递均放在大小不等的长方体快递盒中 为了能够装载更多的快递 同时不能让货车超载 需要计算最多能装多少个快递 注 快递的体积不受限制 快递数最
  • Ubuntu虚拟机下docker容器的自启动设置

    一 背景 希望启动虚拟机后 当然docker自动启动了的情况下 我们希望对应的容器也自动启动 比如tomcat或者redis 二 设置过程 1 如果是已经有容器实例了 修改吧 命令为 sudo docker update restart a
  • QT-TCP服务端开启多个线程处理收到多客户端发来的消息示例

    本文主要解决的问题是 一 一个服务端怎么处理多客户端的连接 二 一个服务端怎么开启多个线程来处理所有客户端发来的消息 换汤不换药 可以看这篇博客Qt封装一个类管理moveToThread 正确的开启多线程 安全的退出线程的实例不管是开启多个
  • centos7下的Python3.7的安装

    我这里使用的时centos7 centos系统本身默认安装有python2 x 版本x根据不同版本系统有所不同 可通过 python V 或 python version 查看系统自带的python版本 有一些系统命令时需要用到python
  • linux如何退出root用户

    普通用户通过su命令切换成root用户 使用exit命令可以退出root用户的shell回到原来的用户shell
  • linux 清除 arp 缓存

    所有在Linux系统下 arp d ip 命令只能清除一个IP地址的对应MAC地址缓存 可以使用组合命令操作 组合命令清楚所有arp缓存 arp n awk 1 9 system arp d 1 以上命令必须 root 才可以执行 使用ip
  • mysql 前导列_MySQL 各个索引的使用详解

    一 慢查询日志 1 1 MySQL的日志类型 日志用于记录数据库的运行情况 以及用户对数据库执行的各类操作 当数据库发生故障时 可以根据日志分析和解决问题 从而对数据库进行恢复 1 2 认识慢查询日志 慢查询日志用于记录MySQL数据库中响
  • 用IDEA创建一个Mybatis项目,自动生成映射文件

    如何用IDEA创建一个mybatis项目框架 用mybatis插件自动生成核心配置文件 mapper映射文件 实体类和接口 1 首先打开IDEA 选择新建项目 如下选择maven quickstart 只需要提供maven管理包 所以选择q
  • ajax小的实例,jQuery下的ajax实例

    关于ajax的详细介绍我就不多说了 对ajax完全不了解的可以先查看官方文档学习一些基础的 我想通过这个的实例 直接说一下在真实项目中是如何使用ajax 并且去实现对后台接口的请求和处理请求到的数据 相信很多前端小白和我之前一样 对ajax
  • 包及jar包扫描

    扫描包 private void scanFile File currentFile String packageName File fileList file listFiles 得到该文件夹下的所有 类 子文件夹的名称 此处list应为
  • java中day02

    Java HelloWorld 写法一 推荐 避免歧义 public class Demo01 public static void main String args System out println 桃李不言下自成蹊 javac De
  • 视频教程-自然语言处理基于Bert的中文命名实体识别实战-NLP

    自然语言处理基于Bert的中文命名实体识别实战 长期从事机器学习深度学习研究 在自然语言处理领域有一定认知 杨帅 188 00 立即订阅 扫码下载 CSDN程序员学院APP 1000 技术好课免费看 APP订阅课程 领取优惠 最少立减5元
  • 全开源多语言国际版购物商城软件APP系统开发

    1 确定需求和功能特性 商城基本功能商品展示 购物车 订单管理 支付接口等 多语言支持系统需要支持多个语言版本 可以根据用户的地域和语言偏好切换显示 全开源选择适合的开源框架和技术 确保系统的可定制性和扩展性 APP开发结合移动端开发技术
  • Linux文件操作高频使用命令

    文章目录 0 新建操作 1 查看操作 2 删除操作 3 复制操作 4 移动操作 5 重命名操作 6 解压压缩操作 7 上传文件工具 8 ln file和touch命令 9 查找操作命令 0 新建操作 mkdir abc 新建一个文件夹 to
  • Coredump 详解

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