一,Core dump文件简介
导致进程产生core dump的信号,请参考 “用GDB调试程序--调试器GDB常用功能(菜鸟级)
”:
http://blog.csdn.net/IterZebra/archive/2011/02/22/6198875.aspx 的二,c)。
设置core dump文件生成的目录:
echo mycore-%e > /proc/sys/kernel/core_pattern
echo "/tmp/cores/core-%e
" > /proc/sys/kernel/core_pattern
core dump文件生成开关和大小设定:
ulimit -c limit 其中ulimit是用于获取和设定SHELL和其中启动的进程的相关资源的系统命令,
-c表示设置core文件信息,limit是以k为单位的core文件的大小,unlimited则表示无限大。
以RHEL5为例,core开关系统默认设定方法:
守护进程 配置文件 :/etc/init.d/functions文件中的配置语句
corelimit="ulimit -S -c ${DAEMON_COREFILE_LIMIT:-0}“
SHELL配置 配置文件 : /etc/profile
文件中的配置语句 ulimit -S -c 0>/dev/null 2>&1
<!-- [if !mso]>
<mce:style><!--
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
-->
<!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
proc/sys/kernel/core_pattern文件(Linux 2.4以前不存在此文件)中定义了CORE DUMP文件的名
称
(默认为”core”),其中可以使用以下关键字:
<!-- [if !mso]>
<mce:style><!--
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
-->
<!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
%% A single % character
%p PID of dumped process
%u real UID of dumped process
%g real GID of dumped process
%s number of signal causing dump
%t time of dump (seconds since 0:00h, 1 Jan 1970)
%h hostname (same as ’nodename’ returned by uname(2))
%e executable filename
<!-- [if !mso]>
<mce:style><!--
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
-->
<!-- [endif]--><!-- [if !ppt]--><!-- [endif]--> /proc/sys/kernel/core_pattern中未定义%p时,
/proc/sys/kernel/core_uses_pid文件中定义是否在CORE DUMP文件名后追加进程ID “.PID”
<!-- [if !mso]>
<mce:style><!--
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
-->
<!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
echo 1 > /proc/sys/kernel/core_uses_pid
使得 core文件名后包含 .PID
echo 0 > /proc/sys/kernel/core_uses_pid
使得core文件名后不包含 .PID
<!-- [if !mso]>
<mce:style><!--
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
-->
<!-- [endif]--><!-- [if !ppt]--><!-- [endif]--> sysctl
命令也可以对以上配置进行设定
请参考
man sysctl
suse Linux下配置core dump文件的目录:
编辑 vim /etc/sysctl.conf
#Set core dump directroy
kernel.core_pattern = /var/opt/nec/pfc/core/%e-%p.core
二,用GDB制作core dump文件
<!-- [if !mso]>
<mce:style><!--
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
-->
<!-- [endif]--><!-- [if !ppt]--><!-- [endif]--> 实际开发中经常遇到程序(特别是后台程序)不响应外界的操作,好像阻塞在某处的现象,
此种情况下也可以取得c
ore文件进行分析。
如下,对PID进程,使用gcore产生core dump名字为corefilename,然后保存。
<!-- [if !mso]>
<mce:style><!--
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
-->
<!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
gdb -p PID (对进程PID进行调试)
(gdb) gcore corefilename
Saved corefile corefilename
<!-- [if !mso]>
<mce:style><!--
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
-->
<!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
另:
gdb
衍生命令
/usr/bin/gcore
<!-- [if !mso]>
<mce:style><!--
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
-->
<!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->usage: gcore [-o filename] pid
<!-- [if !mso]>
<mce:style><!--
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
-->
<!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
<!-- [if !mso]>
<mce:style><!--
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
-->
三,本文结束语
设置core dump以便调试,在进程不响应的时候制作core文件以便分析,是调试中常用的技术。
希望本文对您有所帮助。
<!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
<!-- [if !mso]>
<mce:style><!--
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
-->
<!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
<!-- [if !mso]>
<mce:style><!--
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
-->
<!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
GDB 中使用backtrace命令
GDB 中使用backtrace
<!-- [if !mso]>
<mce:style><!--
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
p\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
v\:textbox {display:none;}
-->
<!-- [endif]--><!-- [if !ppt]--><!-- [endif]-->
分享到:
相关推荐
GDB之在线调试与Coredump分析,通过gdb一步步分析coredump文件。
讲述常用gdb命令,以及讲述如何使用gdb调试程序崩溃后产生的core dump文件,让您在linux下开发更轻松
用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序
陈浩-用GDB调试程序(整理有书签).pdf+守望的个人博客-GDB调试指南(整理有书签).pdf
GDB调试--以汇编语言为例
详细并且全面的GDB入门,易理解。 内容: 一、 GDB概述 二、系统认识GDB 三、GDB的命令概貌 ...六、调试已运行的程序 七、查看栈信息 八、查看源程序 九、查看运行时数据 十、查看寄存器 十一、改变程序的执行
qtcreator-gdb-7.4-MINGW32_NT-6.1-i686 QtCreator 的调试器
GDB是一个强大的命令行调试工具,和大家共享一下。
用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序 用GDB调试程序
Linux下怎么产生core dump文件及GDB怎么调试core.pptx Linux下怎么产生core dump文件及GDB怎么调试core.pptx
1、程序运行参数 2、运行环境 3、工作目录 4、程序
qtcreator-gdb-7.4-MINGW32_NT-6.1-i686版本调试器主要用于调试QT程序,与QT4.8.5桌面版配套,在本博客内也有相关资源可以下载。
用GDB调试程序
GDB调试程序[陈皓] GDB调试工具指南 两个pdf文件
使用VS2015开发Linux程序,在Linux端资源安装资源 CentOS7安装命令为:rpm -ivh gdb-gdbserver-7.6.1-120.el7.x86_64.rpm
安装MinGw报错无法下载gdb-7.6.1-1-mingw32-bin.tar.lzma 。可以下载这个文件,把其中解压出来的gdb.exe放在MinGw/bin目录下即可。注意解压lzma文件需要使用特殊软件,如:“7-zip”。
内含有mingw-get-setup.exe以及gdb-7.6.1-1-mingw32-bin.tar,容易被墙,都下好了,换点积分
gdb-linaro-7.6-2013.05.tar.bz2, opensource, openwrt