[转]gdb结合coredump定位崩溃进程
[转]gdb结合coredump定位崩溃进程
http://blog.sina.com.cn/s/blog_54f82cc201013tk4.html
Linux环境下经常遇到某个进程挂掉而找不到原因,我们可以通过生成core file文件加上gdb来定位。
ulimit -c unlimited
这样便把core
file的大小设置为了无限大,同时也可以使用数字来替代unlimited,对core
file的上限值做更精确的设定。
file在哪里?
file生成的地方是在/proc/sys/kernel/core_pattern文件定义的。
echo "pattern"
> /proc/sys/kernel/core_pattern
并且只有超级用户可以修改这两个文件。
%p: 相当于
%u: 相当于
%g: 相当于
%s:
相当于导致dump的信号的数字
%t: 相当于dump的时间
%h:
相当于hostname
%e:
相当于执行文件的名称
file到系统/tmp目录下,并记录pid以及执行文件名
> /proc/sys/kernel/core_pattern
|
1
2
3
4
5
6
7
8
9
10
11
12
|
#includeintfunc(int *p){ *p}intmain(){ func(NULL); return0;} |
a.c
Segmentation fault (core
dumped)
main /tmp/core-main-10815
fault.
#0 0x080483ba in func ()
如何定位到行?
main -g a.c
gdb main
/tmp/core-main-10815
Segmentation fault.
#0 0x080483ba in func (p=0x0) at a.c:5
5
*p = 0;
unlimited
echo "/tmp/core-%e-%p"
> /proc/sys/kernel/core_pattern
main -g a.c
/tmp/core-main-10815
backtrace
fault.
0x080483ba in func (p=0x0) at
main.c:5
*p = 0;
0x080483ba in func (p=0x0) at
main.c:5
0x080483d4 in main () at
main.c:10
thread apply all backtrace
[var]
= (int *) 0x0
= (int **) 0xbf96d4d4
[Address]
is a repeat count followed by a format letter and a size
letter.
u(unsigned decimal),
a(address), i(instruction), c(char) and
s(string).
g(giant, 8 bytes).
specified number of objects of the specified size are
printed
file文件的信号有以下10种
SIGQUIT:终端退出符
SIGILL:非法硬件指令
SIGTRAP:平台相关的硬件错误,现在多用在实现调试时的断点
SIGBUS:与平台相关的硬件错误,一般是内存错误
SIGABRT:调用abort函数时产生此信号,进程异常终止
SIGFPE:算术异常
SIGSEGV:segment
violation,无效内存引用
SIGXCPU:超过了cpu使用资源限制(setrlimit)
SIGXFSZ:超过了文件长度限制(setrlimit)
SIGSYS:无效的系统调用
[转]gdb结合coredump定位崩溃进程的更多相关文章
- gdb调试coredump(使用篇)
gdb调试coredump(使用篇) 看到一个非常好的介绍coredump的文章,做个记录, 参考链接: https://blog.csdn.net/sunxiaopengsun/article/de ...
- 使用GDB生成coredump文件【转载】
本文转载自: http://blog.csdn.net/sky_qing/article/details/8548989 如果在测试过程中遇到某个进程的CPU利用率过高或者卡死而需要去调试该进程时,可 ...
- gdb 调试coredump文件过程
gdb 调试coredump文件过程: 第一步:首先需要一个进程的coredump文件,怎么搞出coredump文件呢? 1. ps -fax|grep 进程名称 找到 ...
- gdb调试coredump文件
linux上程序崩溃起来挺烦人,不过linux 比较好的是有gdb. 1.生成coredump文件 echo "ulimit -c unlimited" >> /etc ...
- linux下gdb如何处理coredump错误
linux下gdb如何处理coredump错误 在编写C++程序中,我们经常会遇到一种错误,segment fault, 这种coredump错误 会导致程序运行时异常退出或者终止,这种错误没有明显错 ...
- gdb/valgrind/coredump to debug c/cpp program
gdb/valgrind/coredump 调试 1.gdb 调试 while/for 循环 ①如果在调试 while/for的时候,可以用until xxx(其中,xxx代表 行号)直接跳转到循环后 ...
- VS2008通过 map 和 cod 文件定位崩溃代码行
VS 2005/2008使用map文件查找程序崩溃原因 一般程序崩溃可以通过debug,找到程序在那一行代码崩溃了,最近编一个多线程的程序,都不知道在那发生错误,多线程并发,又不好单行调试,终于找到一 ...
- Linux下利用coredump技术追查进程崩溃原因
原文链接:https://blog.csdn.net/u014585564/article/details/68063269 最近项目中出现了一个问题,服务器端程序会突然崩溃退出,我们采取了cored ...
- 嵌入式arm-linux mips-linux 交叉编译GDB,结合vscode图形化调试使用,coredump定位段错误
第一部分:使用GDB GDB源码下载路径:http://ftp.gnu.org/gnu/gdb/ 遇到的主要难点: 选择合适的GDB源码版本 我的mips-linux交叉编译器不支持C++11特性,所 ...
随机推荐
- android 3D旋转效果实现
一说到3D,可能第一反应就是使用OpenGL ES....但是,实现这么个小功能,要动用这玩意,莫名的恐惧啊!!!!至今也没弄明白这个怎么玩... 好吧,幸亏还有个Camera类可以帮助我们,据说底层 ...
- LoadRunner性能测试指挥中心Controller 《第四篇》
一.设计场景 1.设计性能测试场景 Controller有两个视图:设计(Design)视图和运行(Run)视图.启动Controller,在Controller主界面里,我们可以看到这两个视图. 1 ...
- 如何查找Mac上的USB存储设备使用痕迹
最近刚好有个案子的证物主机是MBP, OS X版本为El Capitan,案况与营业秘密外泄有关,当中要找有关USB存储设备的使用痕迹. 要提醒大家的是,不同版本的OS X,各种迹证的存放文件名称及路 ...
- Completely change MACE timestamps?
Hi, One of my friends Sandy asked me about the possibility of completely change MACE timestamps. As ...
- SID与GUID的区别
1.在AD里面创建一个用户或者组都会为其分配一个SID,同时也会为这些对象分配一个GUID,GUID是一个128位的字符串,一个标识符,GUID不仅在整个域里面是唯一的,并且在全世界的范围内都是唯一的 ...
- 深入浅出Nodejs读书笔记(转)
Node简介 这一章简要介绍了Node,从中可以了解Node的发展历程及其带来的影响和价值. 为什么叫Node?起初,Ryan Dahl称他的项目为web.js,就是一个Web服务器,但是项目的发展超 ...
- c/c++基本问题
1. 使用g++将文件编译成库文件 g++ -c -O2 -fPIC test.cpp -o test.o && g++ -shared -Wall -o test.so test.o ...
- puppet实现主从部署各种软件实战参考模型
puppet实现主从部署各种软件实战参考模型 实验要求: 1.我将准备三个节点 node2 , node3 , node4 2.我们想让节点node3部署ntp,nginx ;节点node ...
- 在SQL中取出字符串中数字部分或在SQL中取出字符部分
在SQL中取出字符串中数字部分或在SQL中取出字符部分 编写人:CC阿爸 2013-10-18 近来在开发一个项目时,一包含数字的字符串,需要取出中间的数字部分进行排序.经过baidu搜索.并结合自己 ...
- php小算法总结一(数组重排,进制转换)
1.两个有序数组组合成一个新的有序数组 <?php $arr1=array(2,5,7,9,12); $arr2=array(3,4,6,8,10,11); function merge_sor ...