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
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
产生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
相关文章推荐
- linux 为崩溃的程序生成core文件的相关函数,调用代码生成core dump file 但程序不用退出,gdb 分析core
- 用gdb工具分析core文件
- gdb调试,分析core文件,找出段错误位置
- linux core dump 文件 gdb分析
- gdb分析core文件
- linux core dump 文件 gdb分析
- C语言gdb分析段错误的core文件
- 用gdb分析core文件及常见gdb命令操作示例
- 用gdb工具分析core文件
- 如何使系统可以产生core文件
- MEye工具可以用于调试分析ASN.1编码
- 如何让所有的后台程序(daemons)都可以产生core dumps文件?
- gdb调试core文件
- 各种文件的文件头格式,可以用于从流中判断文件格式(部分验证)
- TcpTracts( 利用服务器,用于两个或多个私网之间建立tcp连接,可以用于发文件,传语音等 )
- GDB调试core文件样例(如何定位Segment fault)
- GDB调试core文件样例(如何定位Segment fault)
- GDB调试core文件样例(如何定位Segment fault)
- core文件分析
- core文件分析