linux下gdb如何处理coredump错误

在编写C++程序中,我们经常会遇到一种错误,segment fault, 这种coredump错误

会导致程序运行时异常退出或者终止,这种错误没有明显错误提示信息,该如何定位错误呢?

在linux下,这种错误会生成的一个叫做core的文件,这个core文件会记录程序在运行时的内存,寄存器状态,内存指针和函数堆栈信息等等。对这个文件进行分析可以定位到程序异常的时候对应的堆栈调用信息。

但某些情况下,程序异常结束并不会生成这个core文件,我们需要对linux环境做出一些设置。

1. 检查core file size 是否被限制为0

输入指令:

ulimit -a

若core file size 后面是0,我们需要修改为无限制

输入:

ulimit -c unlimited

修改后为:

2.禁用apport服务

如果第一条操作仍无法生成core文件,那么我们需要继续执行以下操作:

  1. 设置core 文件的格式

打开 /etc/sysctl.conf , 在底部加上如下2行, 设置生成的core文件格式

sudo vim /etc/sysctl.conf

%e-execute name, %p-process %s-siganl that cause coredump
kernel.core_pattern=core-%e-%p-%s
  1. 禁用apport 服务, 有这个服务运行还是不能生成core 文件

sudo systemctl disable apport.service

  1. 重启电脑或者虚拟机

使用GDB进行调试

gdb [可执行文件名] [core文件名]

执行gdb调试指令,backtrace(bt)打印当前的函数调用栈的所有信息进行错误定位。

linux下gdb如何处理coredump错误的更多相关文章

  1. 一文入门Linux下gdb调试(二)

    作者:良知犹存 转载授权以及围观:欢迎添加微信号:Conscience_Remains 总述     今天我们介绍一下core dump文件,Core dump叫做核心转储,它是进程运行时在突然崩溃的 ...

  2. Linux知识(5)----LINUX下GDB调试

    命令 解释 示例   file 加载被调试的可执行程序文件.因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径. (gdb) file gdb-sample     r c Run的简 ...

  3. linux下QT Creator常见错误及解决办法

    最近因为在做一个关于linux下计算机取证的小项目,需要写一个图形界面,所以想到了用QT来写,选用了linux下的集成开发环境QT Creator5.5.1,但刚刚安装好,竟然连一个"hel ...

  4. linux下挂载NTFS分区错误修复

    今天在linux下打开win的NTFS硬盘总是提示出错了,而且是全部的NTFS盘都出错,其中sda1错误显示如下: Error mounting /dev/sda1 at /media/wangbo/ ...

  5. Linux下gdb的安装及使用入门

    1.安装gdb. 在root用户权限下: root@iZ2zeeailqvwws5dcuivdbZ:~# apt-get update ...... ...... ...... root@iZ2zee ...

  6. 一文入门Linux下gdb调试(一)

    作者:良知犹存 转载授权以及围观:欢迎添加微信号:Conscience_Remains 总述 在window下我们习惯了IDE的各种调试按钮,说实话确实挺方便的,但到了Linux下,没有那么多的IDE ...

  7. LINUX下GDB反汇编和调试

    Linux下的汇编与Windows汇编最大的不同就是第一个操作数是原操作数,第二个是目的操作数.而Windows下却是相反. 1. 基本操作指令 简单的操作数类型说明.一般有三种. (1)马上数操作数 ...

  8. linux下 gdb+coredump 调试偶发crash的程序

    1. 打开 core dump 查看是否打开 ulimit -c 如果输出0, 说明没有打开. 方法一:使用命令 ulimit -c unlimited 可以打开,但是只对当前终端有效, 方法二: 配 ...

  9. Linux下gdb调试(tui)

    1 处于TUI模式的GDB 为了以TUI模式运行GDB,可以在调用GDB时在命令行上指定-tui选项,或者处于非TUI模式时在GDB中使用Ctrl+X+A组合键.如果当前处于TUI模式,后一种命令方式 ...

随机推荐

  1. 【IntelliJ IDEA】代码模板

    psvm:main方法 sout:console输出 iter:foreach遍历 fori:for索引遍历

  2. SYCOJ1717负二进制

    题目-负二进制 (shiyancang.cn) 进制的实质在于对于进制数的选择,选择不满足的填入当前的位置,然后除掉,继续开始选择.但是对于本题,是负数,但是进制上的数字为正数,所以就要调整,借位,因 ...

  3. jenkins学习9-测试报告发邮件(Email Extension Plugin)

    前言 前面已经实现在jenkins上展示html的测试报告,接下来只差最后一步,把报告发给你的领导,展示你的劳动成果了. 安装 Email Extension Plugin 插件 jenkins首页- ...

  4. STM32 EXTI(外部中断)

    一.EXTI 简介 EXTI(External interrupt/event controller)-外部中断/事件控制器,管理了控制器的 20个中断/事件线.每个中断/事件线都对应有一个边沿检测器 ...

  5. Json Schema 是什么?

    本文地址:Json Schema 是什么? 简单说,Json Schema 其实就是一个标准的 Json 串,它以一个 Json 串来描述我们需要的数据规范,并且支持注释以及验证 Json 文档,即我 ...

  6. 性能优化-使用双buffer实现无锁队列

    借助本文,实现一种在"读多写一"场景下的无锁实现方式 在我们的工作中,多线程编程是一件太稀松平常的事.在多线程环境下操作一个变量或者一块缓存,如果不对其操作加以限制,轻则变量值或者 ...

  7. 《剑指offer》面试题58 - I. 翻转单词顺序

    问题描述 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a student. ",则输出&quo ...

  8. 白嫖党的福音!!!全新的Java300集视频(2022版)来了!

    它来了它来了,经过一年时间的沉淀, [尚学堂]高淇Java300集完整版正式发布啦! 应广大网友和尚学堂忠实的孜孜学子以及听众朋友的要求,尚学堂在去年十月份就把预计在2022年发布的Java300集提 ...

  9. Anaconda 创建 32位python虚拟环境

    Anaconda 创建 32位python虚拟环境 ​ 最近实习在做一个接口自动化数据上传的功能,因为数据是更新的,需要每次上传都查询数据库调用匹配,就不得不面对 python 连接 oracle . ...

  10. 2022GDUT寒训专题一I题

    题目 题面 给一个长度为 N的数组,一个长为 K的滑动窗体从最左端移至最右端,你只能看到窗口中的 K 个数,每次窗体向右移动一位,如下图: 窗口位置 最小值 最大值 [1 3 -1] -3 5 3 6 ...