linux下利用core dump 对异常退出的程序调试
2014-09-26 09:36
639 查看
在Linux下,当执行程序异常退出时,系统会将内存中执行的代码copy一份到磁盘,然后将内存释放,其中生成的文件名是core或core.pid,默认生成路径是执行程序所在的目录。
具体使用步骤:
1.设置core文件的大小。
在终端输入命令:$ ulimit -c 1024
core文件的最大为1024,大于部分会被截取,此命令设置core文件的大小为1024,也可以设置为其他小于1024的值.
在终端输入命令:$ ulimit -a
此命令为查看core文件的一些参数,可以检验你的core文件大小是否设置成功。
2.编写c++程序,名为test.cpp。
3.编译test.cpp。
输入命令:$ g++ -Wall -g test.cpp -o test
系统将生成名为test的可执行文件,用 -g 选项编译是为了调试。
4.运行test。
输入命令:$ ./test
系统将提示程序异常退出,并在当前文件夹下生成core文件。
5.采用gdb调试。
输入命令:$ gdb -core=core
进入到调试界面。
输入命令:file ./test
将符号链接到执行程序
输入命令:bt
查看出错的函数
输入命令:list
查看出错的代码
另外说明:
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 添加命令名
具体使用步骤:
1.设置core文件的大小。
在终端输入命令:$ ulimit -c 1024
core文件的最大为1024,大于部分会被截取,此命令设置core文件的大小为1024,也可以设置为其他小于1024的值.
在终端输入命令:$ ulimit -a
此命令为查看core文件的一些参数,可以检验你的core文件大小是否设置成功。
2.编写c++程序,名为test.cpp。
#include <iostream> using namespace std; void solve() { char *p = NULL; cout << *p << endl; //显然,此处访问了空内存地址的值,程序将异常退出 } int main() { void solve(); solve(); return 0; }
3.编译test.cpp。
输入命令:$ g++ -Wall -g test.cpp -o test
系统将生成名为test的可执行文件,用 -g 选项编译是为了调试。
4.运行test。
输入命令:$ ./test
系统将提示程序异常退出,并在当前文件夹下生成core文件。
5.采用gdb调试。
输入命令:$ gdb -core=core
进入到调试界面。
输入命令:file ./test
将符号链接到执行程序
输入命令:bt
查看出错的函数
输入命令:list
查看出错的代码
另外说明:
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 添加命令名
相关文章推荐
- Linux+QT+OpenCv摄像头调试心得(2)----点击退出关闭窗体,提示“程序异常终止”
- 调试技巧 —— 如何利用windbg + dump + map分析程序异常 .
- Linux程序异常退出打印调用堆栈
- 调试技巧 —— 如何利用windbg + dump + map分析程序异常
- Linux-- 简单的程序守护脚本,程序异常退出后自动重启
- 调试技巧 —— 如何利用windbg + dump + map分析程序异常
- Linux多线程socket程序异常退出-断开的管道
- 程序异常退出时,利用Dump技术,记录出错的地方
- 调试技巧 —— 如何利用windbg + dump + map分析程序异常
- 调试技巧 —— 如何利用windbg + dump + map分析程序异常
- 调试技巧 —— 如何利用windbg + dump + map分析程序异常
- 使用Visual Studio 利用WinGDB编译和远程调试嵌入式Linux的程序
- 调试技巧 —— 如何利用windbg + dump + map分析程序异常
- c\c++出bug调试技巧 —— 如何利用windbg + dump + map分析程序异常 .
- 利用Core Dump调试程序
- 调试技巧 —— 如何利用windbg + dump + map分析程序异常
- 调试技巧 —— 如何利用windbg + dump + map分析程序异常
- 调试技巧 —— 如何利用windbg + dump + map分析程序异常
- linux环境下GDB与core dump调试程序方法
- Linux程序异常退出打印调用堆栈