一,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,可以轻松地调试程序,检查程序崩溃后的核心转储文件(Core Dump),从而帮助开发者快速定位和解决问题。 GDB基础命令 在使用GDB之前,需要了解一些基本命令。这些命令可以帮助开发者快速启动GDB,设置...
Core Dump 文件调试 Core Dump 文件调试是指使用 ...Core Dump 文件调试是指使用 GDB 调试 Core Dump 文件的过程,是一个非常有用的调试技术,可以帮助开发者快速定位问题所在的位置,提高开发效率和减少 Debug 时间。
本文将详细介绍 coredump 文件的生成和解析过程,涵盖了 coredump 文件生成环境的设置、交叉编译执行文件、coredump 文件的生成、PC 端的 arm-gdb 解析等方面。 一、coredump 文件生成环境的设置 在 Linux 操作...
为了调试汇编语言程序,需要使用-gstabs参数重新编译代码,以便生成可调试的可执行文件。 ``` as -gstabs -o cpuid.o cpuid.s ld -o cpuid cpuid.o ``` 然后,可以使用GDB调试器来调试程序: ``` gdb cpuid ``` ...
在线调试是在程序运行的过程中进行调试,而Coredump分析是在程序异常退出后,通过分析Coredump文件了解程序崩溃时的状态,以确定崩溃的原因。 在线调试是开发者在程序运行时进行调试的过程,可以实时查看程序的运行...
- `core <file>`:使用core dump文件进行调试。 - `attach <PID>`:与已运行的进程ID关联,开始调试。 5. **控制程序执行**: - `break <location>`:在特定位置(如函数名或行号)设置断点。 - `watch ...
通过以上步骤,我们可以有效地在Linux环境下生成和分析core dump文件,这对于调试程序崩溃的原因具有重要的作用。特别是对于开发人员来说,合理配置core dump文件的生成规则,能够大大提升故障排查的效率,从而更快...
### Linux下产生Core Dump文件及使用GDB调试详解 #### 一、Core文件的基本概念与作用 当一个程序因为某些原因而崩溃时,系统内核会自动创建一个名为`core`的文件,这个文件包含了程序崩溃时刻的内存映像以及其他...
GDB(GNU调试器)是这个调试器的核心,它是开源社区广泛使用的C/C++程序调试工具。 首先,让我们深入了解QT Creator。QT Creator是一款集成开发环境(IDE),由QT公司开发,用于编写QT应用程序。它集成了编辑器、...
例如,对于给出的`tst.c`源代码示例,我们首先使用`cc -g`编译生成包含调试信息的可执行文件`tst`。然后,启动GDB并加载`tst`,通过`list`或简写`l`命令查看源代码。接着,可以设置断点,如在第16行和`func`函数入口...
陈浩的《用GDB调试程序》和守望的个人博客的《GDB调试指南》这两份资料,提供了丰富的实践案例和详细的操作步骤,帮助读者从基础到进阶掌握GDB的使用技巧。通过阅读这些教程,你可以了解如何有效地使用GDB解决实际...
GDB 是一款强大的开源调试器,用于C、C++以及其他支持的语言,它允许程序员在程序运行时检查和控制程序的状态,从而进行调试和问题排查。 描述中的“配置 Eclipse C 平台是要用到的 GDB”意味着 GDB 是在使用 ...
调试Bootloader(如U-BOOT)和内核时,通常需要一个运行在主机上的GDB服务程序,它通过以太网或串口与目标CPU连接,并可能提供Telnet接口以便进行目标CPU的初始化和程序下载。这种架构使得调试过程更为复杂,但也是...
MingW和GDB是开发Windows平台上C/C++程序的重要工具,它们在软件开发中的作用不可忽视。MingW(Minimalist GNU for Windows)是一个将GNU工具集移植到Windows上的项目,使得开发者可以在Windows环境下使用GNU编译器...
Qt Creator 是一个强大的集成开发环境(IDE),专为使用 Qt 框架进行跨平台应用程序开发而设计。它集成了代码编辑、构建管理、调试和版本控制等多种功能于一身,极大地提高了开发效率。在给定的标题和描述中,重点...
详细并且全面的GDB入门,易理解。 内容: 一、 GDB概述 二、系统认识GDB 三、GDB的命令概貌 ...六、调试已运行的程序 七、查看栈信息 八、查看源程序 九、查看运行时数据 十、查看寄存器 十一、改变程序的执行
GDB 是一个强大的命令行调试工具,主要帮忙用户完成四个方面的功能:启动程序、设置断点、检查程序状态和动态改变程序执行环境。GDB 的强大之处在于其可以形成执行序列,形成脚本,非常容易集成在一起,使用几个简单...
- 使用core dump文件进行调试: `gdb <program> core` #### 四、GDB与图形化调试器的对比 - **命令行VS图形界面**: - GDB的优点在于其强大的命令行功能,可以灵活地控制调试流程。 - 图形化调试器如VC++等则提供...
- 为调试进程产生core dump文件并加载可执行程序和core dump文件。 14. 记录与分享 - 记录执行GDB的过程,这对于后期分析和分享调试经验很有用。 - 编写关于GDB使用的小技巧的文档,并通过markdown语法进行格式...
在压缩包的文件名称列表中,尽管没有列出具体子文件,但通常会包含GDB的可执行文件、库文件以及可能的配置文件,这些内容将被解压到合适的位置,以便QT Creator能够识别并使用这个调试器。安装和配置时,需要确保GDB...