Core Dump杂记
作者:未知 时间:2005-09-13 23:03 出处:http://www.doczj.com/doc/8dbef303e87101f69e3195fa.html 责编:chinaitpower
摘要:Core Dump杂记
1、开启系统的Core Dump功能
ulimit -c core_file_size_in_kb
如果要关闭该功能core_file_size_in_kb为0就行了。
2、设置Core Dump的核心转储文件目录和命名规则
文件的命名规则放在
/proc/sys/kernel/core_name_format文件中
使用sysctl -w "kernel.core_name_format=/coredump/%n.core"
上例的core文件放在/coredump目录下,文件名是进程名+.core
以下是一些命名的格式说明
%P The Process ID (current->pid)
%U The UID of the process (current->uid)
%N The command name of the process (current->comm)
%H The nodename of the system (system_utsname.nodename)
%% A "%"
3、分析核心转储文件
程序如下:
#include
int main()
{
int i=0;
int j=5;
int tmp;
for(; i < 10; i++, j--)
{
tmp=i/j;
printf("%d/%d=%dn", i, j, tmp);
}
}
该程序运行到i=5时,会发生浮点运算错误(被除数等于0,j=0)
编译上面的程序
gcc -g main.c -o eg
./eg
发生core-dump后,如果核心转储文件是core.2098,执行下面的命令
gdb eg core.2098
可以看到当时的信息,此出不方便录入。
4、杂项
kill -l
上面命令列出所有信号的名称和值
kill -l val
查询值为val的信号名称
kill -l signame
查询signame信号的值
附录 A. IBM AIX中产生Core文件的方法(来源于IBM cn)
Document #: 1311993F06001
环境:(产品,平台,机型,软件版本,等)
平台:RS
软件版本:AIX4.3 or later
问题描述:
如果用户需要为一个应用进程产生一个完整的core文件用于分析,如何做?
解答:
1. 前提条件
在产生core文件之前,先要配置系统参数以确认系统可以产生一个完整的core文件。另外,文件系统中还需要有足够的剩余空间用于存放所产生的core文件。core文件通常存放在进程属主用户的主目录中。
2. 什么时候要产生完整地Core文件
缺省情况下,进程不会产生一个完整的core文件。如果需要跟踪调试一个应用的共享内存段中的数据,特别是线程堆栈中的数据,则需要产生一个完整的core dump文件用于分析。
3. 若需要产生完整的core文件信息,首先需要以root身份执行下面的命令:
# chdev -l sys0 -a fullcore=true
上述命令也可以通过smitty来完成:
smitty --> System Environments --> Change/ Show Characteristics of Operating System
Change/ Show Characteristics of Operating System
Maximum number of PROCESSES allowed per user [128]
Maximum number of pages in block I/O BUFFER CACHE [20]
Maximum Kbytes of real me