1. core dump是什么?

core dump又叫核心转储,当操作系统收到特定的signal时,

会生成某个进程的core dump文件。这样程序员可以根据

已经生成的core dump文件来debug查错。

gdb -c core_file ./main

bt

这样就能看到函数的调用栈了,不过很多时候这个调用栈信息

对debug来讲可能是没用的。

2. 如何确认linux系统是否启动了core dump功能?

通过ulimit -c来查看,如果是0说明core dump功能是关着的;

如果是unlimited则说明系统已经打开了core dump功能。

3. 如何开启或关闭core dump功能?

ulimit -c unlimited用来开启core dump功能;

ulimit -c 0则用来关闭core dump功能。

4. umilit命令是干什么的?

ulimit命令通过一些参数选项来管理不同种类的系统资源,

比如-c选项即用来指定core文件的大小。

所以通过ulimit -c可以查看当前系统已经设定的core文件的大小;

通过ulimit -c unlimited可以设置core文件为无限大,也就是

启动了core dump功能了。

ulimit -a可以显示所有的limit信息。

5. 当程序crash时,core dump文件会放到哪里去?

cat /proc/sys/kernel/core_pattern可以查看core dump文件的放置位置,

用户可以根据需要自行设定。例如用户想要将core dump文件放到USB

根目录,可以通过如下的命令来设定:

echo /mnt/usb/sda1/core_%e_sig%s_pid%p > /proc/sys/kernel/core_pattern,

其中%e,%s,%p是core_pattern可以设置的格式符,%e表示命令名,

%s表示产生core dump的signal,%p表示产生core dump的process的PID。

6. 哪些情况不会产生core dump文件?

linux很多signal默认都会产生core dump文件的,

关于这部分我们会放到linux signal那里做详细的讨论,

此处省略一千字。

7. 如何测试所做的core dump配置是否正确?

ulimit -c unlimited

echo /mnt/usb/sda1/core_dump > /proc/sys/kernel/core_pattern

echo 1 > /proc/sys/kernel/core_uses_pid

做了以上设置后,再:

ulimit -c

cat /proc/sys/kernel/core_pattern

cat /proc/sys/kernel/core_uses_pid

查看设置是否正确。如果设置都正确的话,

先用ps -A | grep process_name找到需要测试的process的PID。

kill -11 pid向pid这个process发生SIGSEGV。由于core dump文件

通常都很大,所以稍等一会你再去检查/mnt/usb/sda1/,你会发现

下面多了一个类似于core_xx的文件了。

由于SIGSEGV的默认动作会产生core dump文件,所以首先你得确保

你的process没有去接管SIGSEGV,这样kernel才会默认去处理。

如果你的process接管了这个signal,那你可以用其它的一些signal

做实验,因为默认会产生core dump文件的signal有很多。

8. core dump的应用有哪些?

(1) process不预期的崩溃掉。这时如果能取到core dump文件的话,

对解决问题可能会有很大帮助;

(2) 程序卡住或死锁时,发送诸如SIGSEGV等能够默认产生core dump

文件的signal给你的process。借助于core dump文件,可能会高效的

解决问题。

关于core dump的应用,后续有条件会再补充一些实验及实验结果。

9. /proc/PID/coredump_filter是用来干什么的?

关于这部分内容,还需要study更多的跟linux相关的知识之后才能回答。

等到时机成熟时,再补充回来,sorry。

linux core dump学习的更多相关文章

  1. 【转】 Linux Core Dump 介绍

    ===============================================================  Linux core dump的祥细介绍和使用 =========== ...

  2. Linux core dump file详解

    Linux core dump file详解 http://www.cnblogs.com/langqi250/archive/2013/03/05/2944931.html

  3. Linux Core Dump

    当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中,这种行为就叫做Core Dump(中文有的翻译成“核心转储”).我们可以认为 core dump 是“内存快 ...

  4. linux core dump 文件 gdb分析

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

  5. Segment fault及LINUX core dump详解 (zz)

    C 程序在进行中发生segment fault(core dump)错误,通常与内存操作不当有关,主要有以下几种情况: (1)数组越界. (2)修改了只读内存. (3)scanf("%d&q ...

  6. Segment fault及LINUX core dump详解

    源自:http://andyniu.iteye.com/blog/1965571 core dump的概念: A core dump is the recorded state of the work ...

  7. Linux Core Dump【转】

    转自:http://www.cnblogs.com/hazir/p/linxu_core_dump.html 当程序运行的过程中异常终止或崩溃,操作系统会将程序当时的内存状态记录下来,保存在一个文件中 ...

  8. linux core dump 生成和调试

    core dump 某些信号的产生会导致产生core dump,包含了进程终止时的内存镜像.在某些时候这个core文件就非常的有用处,配合gdb或者lldb调试起来非常方便. 更详细的文档参考 Lin ...

  9. Linux core dump总结

    文章链接:https://www.cnblogs.com/Anker/p/6079580.html 1.前言 一直在从事linux下后台开发,经常与core文件打交道.还记得刚开始从事linux下开发 ...

随机推荐

  1. 在Debian Wheezy 7.3.0上编译安装3.12.14内核

    最近需要对Linux的一个内核模块进行调整实验,故决定先在虚拟机中完成编译调试工作,最后再在真实的系统上进行测试.为了防止遗忘,把过程记录于此. 1. 准备系统环境 首先从官网下载最新版的Virtua ...

  2. 类型转换操作符static_cast、const_cast、dynamic_cast、reinterpret_cast

    一.static_cast 对于类型转换,我们常常这么做: (type) expression 引进了static_cast类型转换操作符后,我们只需这样做: static_cast<type& ...

  3. linux增大交换分区

    进来在批量搭建环境,遇到搭建完环境之后发现swap忘记的情况,后来百度了下,发现了下面的方法,网上可能存在好多相应的帖子说这个事情也比较简单,以下是自己实践的结果,分享给大家. 1.查看现有memor ...

  4. bash:command not found

    在linux下执行某一常用命令时,提示类似错误信息:bash:bash:command not found 原因是所执行的命令在当前系统环境变量里找不到路径. 例如:刚安装了openOffice时,执 ...

  5. OD: GS Bypasing via SEH / .data

    通过 SEH 绕过 GS 保护 GS 机制没对 SEH 提供保护,所以可心通过攻击异常来绕过 GS. 实验环境为: VMware : Windows sp4, 此版本无 SafeSEH 的影响 Vis ...

  6. OD: Big_Endian vs Little_Endian

    经调试,Windows 下为 Little_Endian,OD 中堆栈数据区的 (dword)0xAABB0102,0x02 存储在低地址,0x01 存储在高地址. 内容来自:http://blog. ...

  7. Java NIO框架Netty教程(一) – Hello Netty

    先啰嗦两句,如果你还不知道Netty是做什么的能做什么.那可以先简单的搜索了解一下.我只能说Netty是一个NIO的框架,可以用于开发分布式的Java程序.具体能做什么,各位可以尽量发挥想象.技术,是 ...

  8. DataSet与DataTable的区别

    DataSet:数据集.一般包含多个DataTable,用的时候,dataset["表名"]得到DataTable DataTable:数据表. 一: SqlDataAdapter ...

  9. win7 重启 IIS.

    步骤 1,打开 "控制面板",并将右上角的"查看方式"设置为 "大/小图标". 2,选择 "管理工具": 3,打开 In ...

  10. UIButton上图片和文字的位置调整

    UIButton 上默认是图片在左文字在右,而大多数情况这样默认的的显示形式都不能满足我们的需求,接下来我就这个问题分享一下我的心得. 默认情况下,不设置的效果,都是居中实现 UIButton *bu ...