您的位置:首页 > 其它

gdb可以用于分析core文件

2017-04-14 19:02 239 查看
gdb可以用于分析core文件。

产生core的原因一般是

1.内存访问越界,错误的数组下标,字符串越界,

2。多线程下使用线程不安全的函数

3.多线程共享数据不加锁保护。

4.非法指针。

5堆栈溢出。特别是不能使用过大的局部变量,容易早成栈溢出。

root@ubuntu:~# ulimit -c

0

 

可以查看限制生成core文件的大小,0表示不生成core文件

 

root@ubuntu:~# ulimit -c unlimited

root@ubuntu:~# ulimit -c

unlimited

 

 

 ulimit -c unlimited

不限制生成的core文件的大小

 

限制512个字节

root@ubuntu:~# ulimit -c 512

root@ubuntu:~# ulimit -c

512

注意:当前设置的ulimit只对当前会话有效,如想在系统均有效,则在/etc/profile中加入ulimit -c unlimited

有如下问题源码

test.c

#include <stdio.h>

int main()
{
int a = 123;
int *b = NULL ;
*b=123;
return 0;
}


gcc test.c -g

生成了a.out可执行文件

使用gdb运行并生成core文件,bt打出栈信息。



 core文件需要使用gdb来查看。

 gdb ./a.out

 core-file core.xxxx

 使用bt命令即可看到程序出错的地方。 

以下两种命令方式具有相同的效果,但是在有些环境下不生效,所以推荐使用上面的命令。 

(1)gdb -core=core.xxxx

file ./a.out

bt 

(2)gdb -c core.xxxx

file ./a.out

bt
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gdb调试core文件