core dumped 这个错误怎么解决
答案:2 悬赏:70 手机版
解决时间 2021-03-06 03:02
- 提问者网友:wodetian
- 2021-03-05 14:37
core dumped 这个错误怎么解决
最佳答案
- 五星知识达人网友:未来江山和你
- 2021-03-05 15:32
跟踪一下就知道了。
这种不正常的现象通常很难找
这种不正常的现象通常很难找
全部回答
- 1楼网友:拾荒鲤
- 2021-03-05 15:59
the problem that no `core' file is created on a segmentation fault; locate errors in the source with gdb and `core' files
linux 程序在遇到段错误(常见的是由非法访问内存引起)的时候会产生 core 文件,如果这个程序包含调试信息(编译的时候加 -g 选项),那么使用 gdb 读取这个 core 文件可以快速定位出错的源代码。原来在某软件公司实习的时候(用 redhat enterprise linux)觉得这样非常方便查错,但我自己用的 debian gnu/linux 却默认不生成这个文件。
检查以后发现原因是 core 文件最大尺寸(用 ulimit -c 查看)是 0,把它设置成非 0 值就可以了,如:
ulimit -c 2048(设置 core 文件最大尺寸为 2048 blocks,1block=512bytes,因此这里设置的其实是 1mib)
ulimit -c unlimited(不限 core 文件尺寸)
附:用 gdb 根据 core dump 文件定位错误的办法。
用这个程序作一个测试:
int foo (int *p)
{
return *p;
}
main()
{
foo (0);
}
derek@dli: /tmp $ gcc -g a.c
derek@dli: /tmp $ ./a.out
段错误 (core dumped)
derek@dli: /tmp $ gdb ./a.out -c core
(这里略去约十行其他信息)
core was generated by `./a.out'.
program terminated with signal 11, segmentation fault.
#0 0x0804834a in foo (p=0x0) at a.c:3
3 return *p;
如果再输入一条命令 bt,就可以看得清清楚楚错误是在什么时机产生的:
(gdb) bt
#0 0x0804834a in foo (p=0x0) at a.c:3
#1 0x0804836b in main () at a.c:8
不能有比这更清楚的错误信息了!如果是在 windows 下,就老老实实 trace and step 吧。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯