织梦CMS - 轻松建站从此开始!

罗索

Core Dump杂记

罗索客 发布于 2008-03-03 15:59 点击:次 
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
TAG:

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 <stdio.h>

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 memory allowed for MBUFS [0]
Automatically REBOOT system after a crash false
Continuously maintain DISK I/O history false
HIGH water mark for pending write I/Os per file [33]
LOW water mark for pending write I/Os per file [24]
Amount of usable physical memory in Kbytes 262144
State of system keylock at boot time normal
Enable full CORE dump true
Use pre-430 style CORE dump false
Enable CPU Guard disable

将上面列表中的“ Enable full CORE dump ”项设置为“true”。


4. 使用下面的命令产生一个core文件:
# kill -11
注意:上面的命令同时也会杀掉指定的进程。


附录 B. 如何查看C程序产生的CORE DUMP(来源于IBM cn)
Document #: 1317181000005

环境

产品:IBM C 和C++ Compiler
平台:AIX4.3.0以上
版本: C for AIX version 3 以上

问题描述

如何查看C程序产生的CORE DUMP,并找到产生问题的根源?

解答

在AIX操作系统上查看C程序产生的CORE DUMP,可以使用AIX操作系统提供的命令:dbx. 如果用户在使用时发现无此命令,则需安装 操作系统的文件包:bos.adt.debug。
具体使用dbx命令的方法如下:
1。首先在进行C程序 编译时,要使用-g选项。
cc -g -o samp1.o samp1.c
2.在执行完程序,并产生CORE DUMP文件core后,使用:dbx samp1.o core 命令可查看CORE DUMP。
要想找到是哪个函数或语句引起的问题,在dbx的命令行再输入where,即可显示出所需的信息。dbx的命令行还可执行多种命令以完成不同的查看功能,用户可通过help命令了解这些命令。

(iwgh)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/200803/6909.html]
本文出处: 作者:iwgh
顶一下
(1)
100%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容