`
younglibin
  • 浏览: 1190486 次
  • 性别: 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

    coredump文件的生成与解析.docx

    本文模拟了除零错误发生时,嵌入式arm Linux平台生成的core文件,并在PC端采用arm-gdb解析该core文件,从中可以看出程序崩溃时的函数调用。

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

    ubuntu ubuntu_linux下程序崩溃生成coredump的方法

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

    若程序调用了seteuid()/setegid()改变了进程的有效用户或 组,则在默认情况下系统不会为这些进程生成coredump。很多服务程序都会调用seteuid(),如mysql,不论你用什么用户运行 mysqld_safe启动mysql,mysqld进行的...

    linux core文件生产设置与编码

    本文详细描述了在linux操作系统上,如何设置以及编写core文件代码,使程序在发生段错误的时候,能够获取内存core文件。

    关于linux下core dump【总结】

    一直在从事linux下后台开发,经常与core文件打交道。还记得刚开始从事linux下开发时,程序突然崩溃了,也没有任何日志。我不知所措,同事叫我看看core,我却问什么是core,怎么看。同事鄙视的眼神,我依然在目。后来...

    C++(Qt)软件崩溃调试-学会使用ProcDump (5)20230402.pdf

    1. 之前用过的方法DbgHelp、qBreakpad生成Dump、Linux下配置ulimit -c unlimited生成core的方式功能都比较单一,并且需要配置环境,在程序中调用库,使用较为复杂。 2. 而ProcDump 使用非常简单,不需要配置环境,不...

    C++(Qt)软件崩溃调试-学会使用ProcDump(5)20230403.pdf

    1. 之前用过的方法DbgHelp、qBreakpad生成Dump、Linux下配置ulimit -c unlimited生成core的方式功能都比较单一,并且需要配置环境,在程序中调用库,使用较为复杂。 2. 而ProcDump 使用非常简单,不需要配置环境,不...

    C++(Qt)软件崩溃调试-学会使用ProcDump.7z

    1. 之前用过的方法DbgHelp、qBreakpad生成Dump、Linux下配置ulimit -c unlimited生成core的方式功能都比较单一,并且需要配置环境,在程序中调用库,使用较为复杂。 2. 而ProcDump 使用非常简单,不需要配置环境,不...

    class-dump-z_0.2-0.tar

    (看到一哥们下载要5分。...class-dump -H Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.1.sdk/System/Library/CoreServices/SpringBoard.app/SpringBoard -o ~/Desktop/SpringBoard

    class-dump-3.3.3.dmg

    包括了class-dump的mac版,LINUX版,Windows版 具体用法: class-dump -H Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.1.sdk/System/Library/CoreServices/SpringBoard.app/...

    class-dump-z_0.2-0.tar.gz

    包括了class-dump的mac版,LINUX版,Windows版 具体用法: class-dump -H Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator2.1.sdk/System/Library/CoreServices/SpringBoard.app/...

    google_breakpad源码

    breakpad是一个比Linux core机制更强大的、用于记录程序崩溃时信息的工具。 breakpad是google开发的一个跨平台C/C++ dump捕获开源库和工具套件,可用来发布删除了编译器调试信息的应用程序。在程序崩溃时,将崩溃...

    core-dump-handler:核心转储处理程序脚本(Linux)

    Linux核心转储处理程序 该脚本处理核心转储并将其存储在指定目录中。 它还支持旋转。...sysctl -w kernel.core_pattern= ' |/bin/core-dump-handler.sh -e=%e -p=%p -s=%s -t=%t -d=/var/log/core -r=10 '

    Ubuntu权威指南(2/2)

    core文件 292 11.1.7 使用ls命令检测文件的 ??大小 292 11.2 采用标准工具备份与恢复数据 292 11.2.1 利用cpio实现备份和 ??恢复 294 11.2.2 利用tar实现备份和 ??恢复 298 11.2.3 利用dd实现文件系统的 ??原样复制 ...

    Ubuntu权威指南(1/2)

    core文件 292 11.1.7 使用ls命令检测文件的 ??大小 292 11.2 采用标准工具备份与恢复数据 292 11.2.1 利用cpio实现备份和 ??恢复 294 11.2.2 利用tar实现备份和 ??恢复 298 11.2.3 利用dd实现文件系统的 ??原样复制 ...

    UbuntuChina12

    core文件 292 11.1.7 使用ls命令检测文件的 ??大小 292 11.2 采用标准工具备份与恢复数据 292 11.2.1 利用cpio实现备份和 ??恢复 294 11.2.2 利用tar实现备份和 ??恢复 298 11.2.3 利用dd实现文件系统的 ??原样复制 ...

    su_dung_gdb:手动gdbgdbserver调试Linux中的程序

    它可以帮助我们了解导致coredump的代码(当程序崩溃并生成程序的coredump时)。 通过断点,我们知道程序是否通过该代码运行,以及当时的全局变量/局部变量的状态。 通过观察点,我们还可以查看是哪个代码导致对...

    lunch_cb5801_r58_20160907.7z

    ./octopus_perf.mk: device/softwinner/octopus-perf/configs/tablet_core_hardware.xml:system/etc/permissions/tablet_core_hardware.xml ./octopus_perf.mk: device/softwinner/octopus-perf/configs/camera.cfg:...

Global site tag (gtag.js) - Google Analytics