linux coredump配置与调试
来源: ChinaUnix博客 日期: 2009.02.09 17:11 (共有0条评论) 我要评论
linux coredump配置与调试
Linux
Core Dump 配置与调试
1.core文件的生成开关和大小限制
---------------------------------
1)使用ulimit
-c命令可查看core文件的生成开关。若结果为0,则表示关闭了此功能,不会生成core文件。
2)
使用ulimit
-cfilesize命令,可以限制core文件的大小(filesize的单位为kbyte)。若ulimit
-cunlimited,则表示core文件的大小不受限制。如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件。在调试此
core文件的时候,gdb会提示错误。
2.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
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
添加命令名
3.用gdb查看core文件:
下面我们可以在发生运行时信号引起的错误时发生core
dump了.
发生core
dump之后,
用gdb进行查看core文件的内容,
以定位文件中引发core
dump的行.
gdb [exec
file] [core file]
如:
gdb
./test test.core
在进入gdb后,
用bt命令查看backtrace以检查发生程序运行到哪里,
来定位core dump的文件->行.
4.开发板上使用core文件调试
-----------------------------
如果开发板的操作系统也是linux,core调试方法依然适用。如果开发板上不支持gdb,可将开发板的环境(头文件、库)、可执行文件和core文件拷贝到PC的linux下,运行相关命令即可。
注意:待调试的可执行文件,在编译的时候需要加-g,core文件才能正常显示出错信息!
注意的问题:
在Linux下要保证程序崩溃时生成Coredump要注意这些问题:
一、要保证存放Coredump的目录存在且进程对该目
录有写权限。存放Coredump的目录即进程的当前目录,一般就是当初发出命令启动该进程时所在的目录。但如果是通过脚本启动,则脚本可能会修改当前目
录,这时进程真正的当前目录就会与当初执行脚本所在目录不同。这时可以查看”/proc/进程pid>/cwd“符号链接的目标来确定进程
真正的当前目录地址。通过系统服务启动的进程也可通过这一方法查看。
二、若程序调用了seteuid()/setegid()改变
了进程的有效用户或组,则在默认情况下系统不会为这些进程生成Coredump。很多服务程序都会调用seteuid(),如MySQL,不论你用什么用
户运行mysqld_safe启动MySQL,mysqld进行的有效用户始终是msyql用户。如果你当初是以用户A运行了某个程序,但在ps里看到的
这个程序的用户却是B的话,那么这些进程就是调用了seteuid了。为了能够让这些进程生成core
dump,需要将/proc/sys/fs
/suid_dumpable文件的内容改为1(一般默认是0)。
三、这个一般都知道,就是要设置足够大的Core文件大小限制
了。程序崩溃时生成的Core文件大小即为程序运行时占用的内存大小。但程序崩溃时的行为不可按平常时的行为来估计,比如缓冲区溢出等错误可能导致堆栈被
破坏,因此经常会出现某个变量的值被修改成乱七八糟的,然后程序用这个大小去申请内存就可能导致程序比平常时多占用很多内存。因此无论程序正常运行时占用
的内存多么少,要保证生成Core文件还是将大小限制设为unlimited为好。
分享到:
相关推荐
Linux Core Dump 权威书籍
Linux Core Dump 分析方法实例介绍 本文将通过实例来介绍 Linux 中如何进行 Core Dump 分析,解决死机问题。 一、Core Dump 介绍 Core Dump 是 Linux 系统中一种特殊的文件,它记录了系统崩溃或死机时的系统状态...
Linux Core 文件介绍 Linux Core 文件是一种特殊的文件类型,它是在程序崩溃时生成的,主要用于调试目的。下面将详细介绍 Linux Core 文件的概念、生成机制、使用方法等方面的知识点。 一、Core 文件的简单介绍 ...
### Linux下生成Core Dump详解 #### 一、Core Dump简介 在Linux环境下,当一个程序因为某种原因(如段错误)而崩溃时,系统可以自动为该程序创建一个名为“core dump”的文件。这个文件包含了程序崩溃时内存的快照...
Linux Core Dump文件介绍 Linux操作系统中,当进程因为遭遇错误而异常终止时,系统可以生成一个Core Dump文件,即核心转储文件。Core Dump文件包含进程终止时刻的内存映像,用于之后进行错误分析和调试。本文档将对...
在Linux环境中,当一个程序出现异常终止时,系统可以自动生成一个称为core dump的文件,这个文件包含了程序崩溃时的内存快照和其他相关信息,这对于调试和诊断程序错误非常有帮助。 #### 一、Core文件的作用与重要...
Tiny Core Linux Tiny Core Linux 是一个基于 Linux 操作系统的迷你桌面环境,具有非常小的体积和快速的启动速度。它的核心组件包括 Linux 3.x 内核、Busybox、Tiny X、FLTK 形用户界面和 JWM 窗口管理器,全都运行...
core image for linux
至于其他两个文件,`SUSE Linux.rar`和`Windows XP Professional.rar`,它们似乎与Tiny Core Linux不直接相关。SUSE Linux是另一个知名的Linux发行版,而`SUSE Linux.rar`可能是SUSE的安装或更新文件的压缩包。`...
对linux感兴趣的筒子可以下载玩玩 tinycore1.0.ISO 镜像大小只有10M的linux
在文件内容中,我们可以看到有关Unix/Linux系统版本历史的部分,列举了从1983年的SunOS到2002年不同版本的Unix/Linux操作系统。这些信息对了解操作系统的发展历程非常有价值,可以让初学者对操作系统的发展有个大致...
如果开发板上不支持 GDB,可以将开发板的环境(头文件、库)、可执行文件和 Core 文件拷贝到 PC 的 Linux 下,运行相关命令即可。注意:待调试的可执行文件,在编译的时候需要加 `-g`,Core 文件才能正常显示出错...
便携中文linux操作系统,约37M,以tinycore linux 4.2.1为基础,内核是3.0.3。集成了常用的基本功能,可进行文件管理,文字、图像处理,简单的网络浏览和下载,硬盘分区维护等,同时支持一些常用的压缩格式。更多...
14M Linux Core 最小最直接的 免安装 内含小工具
在Linux系统中,core文件是一种非常重要的调试工具。当我们运行的程序出现异常并崩溃时,如果启用了core文件的生成,那么系统会在程序崩溃时自动创建一个core文件,该文件包含了程序崩溃时内存的快照以及其他有用的...
linux coredump相关设置说明
2.关机后,查 TinycoreLinux 目录 大小40.2MB 3.df Filesystem Size Used Available Use% Mounted on rootfs 450.6M 11.4M 439.3M 3% / tmpfs 250.3M 0 250.3M 0% /dev/shm /dev/sda1 7.7G 50.8M 7.7G 1% /mnt/...
根据给定文件信息,我们可以生成以下与“Accelerated Linux Core Dump Analysis Training Course”相关的知识点: Linux应用程序调试技术是该培训课程的核心主题。课程内容专注于如何通过核心转储(core dump)分析...
Tiny Core Linux是一份很小(10 MB)的最低限度Linux桌面。最新版本基于Linux 3.x内核、Busybox、Tiny X、FLTK图形用户界面、JWM窗口管理器,全部运行在内存中。它并非一份完整的桌面,也不完整支持所有的硬件;它只...