博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Core Dump解析(1)
阅读量:6909 次
发布时间:2019-06-27

本文共 833 字,大约阅读时间需要 2 分钟。

今天调试一个程序, 用到了core dump, 但是不知道是做什么用的,查了一下,明白了些, 记于此.

什么是Core Dump?

Core的意思是内存, Dump的意思是扔出来, 堆出来.

开发和使用Unix程序时, 有时程序莫名其妙的down了, 却没有任何的提示(有时候会提示core dumped). 这时候可以查看一下有没有形如core.进程号的文件生成, 这个文件便是操作系统把程序down掉时的内存内容扔出来生成的, 它可以做为调试程序的参考.

core dump又叫核心转储, 当程序运行过程中发生异常, 程序异常退出时, 由操作系统把程序当前的内存状况存储在一个core文件中, 叫core dump.

如何使用core文件?

gdb -c core文件路径 [应用程序的路径]

进去后输入where回车, 就可以显示程序在哪一行当掉的, 在哪个函数中.

为什么没有core文件生成呢?

有时候程序down了, 但是core文件却没有生成. core文件的生成跟你当前系统的环境设置有关系, 可以用下面的语句设置一下, 然后再运行程序便成生成core文件.

ulimit -c unlimited

core文件生成的位置一般于运行程序的路径相同, 文件名一般为core.进程号

4. 用gdb查看core文件:

下面我们可以在发生运行时信号引起的错误时发生core dump了.

发生core dump之后, 用gdb进行查看core文件的内容, 以定位文件中引发core dump的行.

gdb [exec file] [core file]

如:

gdb ./test test.core

在进入gdb后, 用bt命令查看backtrace以检查发生程序运行到哪里, 来定位core dump的文件->行.

转载于:https://www.cnblogs.com/balaamwe/archive/2011/12/21/2296116.html

你可能感兴趣的文章
java语言适合用来做什么?
查看>>
ConstraintLayout 1.1.1 最详细使用
查看>>
01-多线程图解
查看>>
SpringBoot 使用@Aspect进行日志管理(基于反射代理模式+注解Log)
查看>>
理解DOM到底是什么
查看>>
Swift自定义带角标TabBarController
查看>>
Masonry 源码学习整理
查看>>
关于UIButton的UIEdgeInsets属性
查看>>
聊聊这一年写的 SPS 音乐扩展
查看>>
做为前端开发者,你应该要懂的 http协议
查看>>
安装完Python之后,如何设置Python环境变量
查看>>
Android性能优化全方面解析
查看>>
web安全入门课程推荐--Web 安全恩仇录:漏洞原理
查看>>
iOS定位处理约束冲突
查看>>
Sourcetree安装与使用
查看>>
setTimeout的this指向:学习apply、call、bind
查看>>
课程 1B: 打造布局
查看>>
以太坊 DApp 开发入门,如何搭建一个区块链投票系统。
查看>>
iOS中使用opencv进行图像识别操作
查看>>
Cucumber是如何工作的?
查看>>