`
younglibin
  • 浏览: 1211218 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

linux下生成core dump文件方法及设置

 
阅读更多


1.core文件的生成开关和大小限制
---------------------------------
 1)使用ulimit -c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。
 2)使用ulimit -c filesize命令,可以限制core文件的大小(filesize的单位为kbyte)。若ulimit -c unlimited,则表示core文件的大小不受限制。如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件。在调试此core文件的时候,gdb会提示错误。


2.core文件的名称和生成路径
----------------------------
core文件生成路径:
输入可执行文件运行命令的同一路径下。
若系统生成的core文件不带其它任何扩展名称,则全部命名为core。新的core文件生成将覆盖原来的core文件。

1)/proc/sys/kernel/core_uses_pid可以控制core文件的文件名中是否添加pid作为扩展。文件内容为1,表示添加pid作为扩展名,生成的core文件格式为core.xxxx;为0则表示生成的core文件同一命名为core。
可通过以下命令修改此文件:
echo "1" > /proc/sys/kernel/core_uses_pid

 

注意  proc  是内存文件,使用vi 是不能 编译的,所有只能使用append 的方式 

 

/proc  这个目录是虚拟在内存中的,不在硬盘保存,

proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为访问系统内核数据的操作提供接口。用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的。

 

 

2)proc/sys/kernel/core_pattern可以控制core文件保存位置和文件名格式。
可通过以下命令修改此文件:
echo "/corefile/core-%e-%p-%t" > core_pattern,可以将core文件统一生成到/corefile目录下,产生的文件名为core-命令名-pid-时间戳
以下是参数列表:
    %p - insert pid into filename 添加pid
    %u - insert current uid into filename 添加当前uid
    %g - insert current gid into filename 添加当前gid
    %s - insert signal that caused the coredump into the filename 添加导致产生core的信号
    %t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间
    %h - insert hostname where the coredump happened into filename 添加主机名
    %e - insert coredumping executable name into filename 添加命令名
 
 
永久修改:
 

2. 打开core开关

1
ulimit -c filesize

一般设置成unlimited即可
永久设置, 修改/etc/security/limits.conf文件:

1
#*               soft    core            0

修改成:

1
*               soft    core            unlimited

在正式运营的时候,如果有coredump之后自动拉起的机制,比较容易发生core文件堆满磁盘的情况,需要注意。

3. core文件的格式和路径: 修改/proc/sys/kernel/core_pattern

1
echo '%e.core.%p' > /proc/sys/kernel/core_pattern

各种参数说明

%% 单个%字符
%p dump进程的进程ID
%u dump进程的用户ID
%g dump进程的组ID
%s 导致core dump的信号
%t core dump的时间
%h 主机名
%e 程序文件名

永久设置, 修改/etc/sysctl.conf配置文件,添加一行:

1
kernel.core_pattern = %e.core.%p

然后执行sysctl -p。

4. core文件是否带pid: 修改/proc/sys/kernel/core_uses_pid
如果这个文件的内容被配置成1,那么即使core_pattern中没有设置%p,最后生成的core dump文件名仍会加上进程ID。
永久设置, 修改/etc/sysctl.conf配置文件,添加一行:

1
kernel.core_uses_pid = 1

然后执行sysctl -p。

 

 

 

 

 . 一个小方法来测试产生 core 文件

直接输入指令 :

 

kill -s SIGSEGV $$

 

 sysctl -a | grep core_pattern

 

 

 

 

原因好像是因为core pattern设置是abrt,abrt的问题导致core文件很小或者不产生core文件。解决的方法是不使用abrt作为core pattern。

查看机器的core pattern的设置:

sysctl -a | grep core_pattern

或者:

cat  /proc/sys/kernel/core_pattern

如果core pattern设置成了abrt,改成core方式:

linux-y94w:/ # sysctl -w kernel.core_pattern=core.%p.%e
kernel.core_pattern = core.%p.%e

或者:
linux-y94w:/ # sysctl -w kernel.core_pattern=core.%p
kernel.core_pattern = core.%p

分享到:
评论

相关推荐

    Linux下生成core dump

    ### Linux下生成Core Dump详解 #### 一、Core Dump简介 在Linux环境下,当一个程序因为某种原因(如段错误)而崩溃时,系统可以自动为该程序创建一个名为“core dump”的文件。这个文件包含了程序崩溃时内存的快照...

    ubuntu-linux下程序崩溃生成coredump的方法.pdf

    ### Ubuntu Linux 下程序崩溃生成 Core Dump 的方法 #### 一、Linux 下 Core Dump 文件 **Core Dump 文件** 是一种在程序崩溃时由操作系统自动生成的文件,它包含了程序崩溃时刻的内存快照以及相关的系统信息。这...

    coredump文件的生成与解析.docx

    本文将详细介绍 coredump 文件的生成和解析过程,涵盖了 coredump 文件生成环境的设置、交叉编译执行文件、coredump 文件的生成、PC 端的 arm-gdb 解析等方面。 一、coredump 文件生成环境的设置 在 Linux 操作...

    window COREdump文件生成 c++代码

    在Windows操作系统上,生成Coredump文件对于调试和分析C++程序崩溃原因至关重要。Coredump文件包含了程序崩溃时内存中的关键信息,如进程的内存映射、全局变量、堆栈信息等,使得开发者能够定位到问题的具体位置,...

    Linux下怎么产生core dump文件及GDB怎么调试core.pptx

    ### Linux下产生Core Dump文件及使用GDB调试详解 #### 一、Core文件的基本概念与作用 当一个程序因为某些原因而崩溃时,系统内核会自动创建一个名为`core`的文件,这个文件包含了程序崩溃时刻的内存映像以及其他...

    Linux Debugging: coredump 分析的材料

    `coredump`是Linux系统在程序异常崩溃时生成的一种文件,它包含了程序崩溃时刻的内存映像,用于后期分析错误原因。本文将深入探讨如何利用`coredump`进行问题排查。 标题提到的"Linux Debugging: coredump 分析的...

    Coredump简介及使用

    标题《Coredump简介及使用》和描述《Android Coredump简介及使用_v1.0_***.pdf》揭示了文档主要介绍Coredump的基本概念、产生的原因、控制产生Coredump的方法以及如何使用Coredump文件。Coredump机制广泛存在于多个...

    coredump问题原理探究-Linux x86版.rar

    本资料"coredump问题原理探究-Linux x86版"聚焦于Linux环境下,特别是x86架构下的核心转储文件分析,旨在帮助开发者深入理解core dump的工作机制,并提供有效的定位和解决问题的方法。 一、core dump的基本概念 1. ...

    linux core dump

    在 Linux 下要保证程序崩溃时生成 Coredump 要注意以下问题: 1. 要保证存放 Coredump 的目录存在且进程对该目录有写权限。 2. 如果程序调用了 `seteuid()`/`setegid()` 改变了进程的有效用户或组,则在默认情况下...

    Linux下MySQL数据库使用coredump注意事项

    总结起来,正确配置Linux下MySQL数据库的coredump涉及三个主要方面:确保coredump目录的可写性,处理seteuid()和setegid()导致的权限问题,以及设置合适的core文件大小限制。这些步骤有助于在MySQL出现问题时,获取...

    Linux Debugging: coredump 分析入门的材料

    当一个运行在Linux上的应用程序因为某种原因异常终止(如段错误、除零错误等)时,操作系统可以被配置为生成一个`coredump`文件。这个文件包含了程序崩溃时的内存映像、寄存器状态以及其他相关信息,使得开发者能够...

    Linux应用程序调试之debug_coredump

    当进程接收到某些信号(如SIGSEGV)时,如果内核被配置为允许生成core dump,那么它就会创建一个包含进程内存映像的文件。除了SIGSEGV外,其他信号也可能触发core dump的生成,例如: - SIGABRT:通常由abort()函数...

    Linuxcore文件介绍.pdf

    例如,在这些文件中配置ulimit设置可以控制用户会话中生成Core Dump的行为。 core-%e-%p-%t模式 通过调整/proc/sys/kernel/core_pattern文件,可以控制Core Dump文件的命名和存储位置。例如,设置模式为/corefile/...

    SegmentFault(coredump)调试方法.pdf

    默认情况下,Linux系统可能不允许生成core dump文件。你可以通过`ulimit -c`命令查看当前限制,若输出为0,则表示不允许生成。使用`ulimit -c unlimited`可以设置为无限制,允许生成core dump。此外,`ulimit -a`...

    linux生成core文件

    ### Linux生成Core文件详解 在Linux环境中,当一个程序出现异常终止时,系统可以自动生成一个称为core dump的文件,这个文件包含了程序崩溃时的内存快照和其他相关信息,这对于调试和诊断程序错误非常有帮助。 ###...

    如何使用coredump

    例如,可以先设置`ulimit -c 0`禁止生成core文件,然后运行一个程序使其崩溃,再改为`ulimit -c 1024`允许生成core文件,通过这样的方式测试core文件的生成。 ### 总结 core dump对于软件开发和维护非常重要,它能...

    javacore文件及heapdump文件分析

    javacore 文件及 heapdump 文件分析 javacore 文件和 heapdump 文件是 Java 应用程序在遇到致命问题时产生的两个文件,这两个文件可以帮助我们分析和解决 Java 应用程序中的问题。 javacore 文件是一个文本文件,...

    linux core文件生产设置与编码

    以上这些就是关于Linux下core文件生成设置及编码的知识点。通过合理配置这些参数,可以在程序异常退出时获取完整的内存映像,极大地方便了程序的调试和错误定位。需要注意的是,在生产环境中应谨慎开启core文件生成...

    Linux下发生段错误时如何产生core文件

    在没有设置core dump大小限制的情况下,运行程序不会生成core文件。但当执行`ulimit -c unlimited`设置无限制的core文件大小后,再次运行程序,就会产生一个core dump文件,可以用于后续分析。 为了分析core dump...

Global site tag (gtag.js) - Google Analytics