日期:2014-05-16  浏览次数:20820 次

大神们看看,core文件为什么无法生成
在ubuntu下,下面程序能够正常生成core文件

#include <stdio.h>

int main()
{
    while(1);
    return 0;
}

编译并执行

$gcc -g test.c -o test
$./test &
[1] 31032
$kill -SIGBUS 31032
[1]+  总线错误            (核心已转储) ./test
$ls | grep core
core
$

上面程序验证在当前目录下是能够生成core文件的,但是我执行另外一个实际当中我写的程序(程序比较大,就不贴了),执行到一定步骤的时候会提示:
总线错误(核心已转储)
但是无论如何我就是找不见core文件存放在哪个位置,本目录下是没有的,后来在网上查找到系统的日志,如下:

$sudo cat /var/log/apport.log
ERROR: apport (pid 30996) Wed Nov 27 14:00:22 2013: Unhandled exception:
Traceback (most recent call last):
  File "/usr/share/apport/apport", line 258, in <module>
    drop_privileges(pid, True)
  File "/usr/share/apport/apport", line 54, in drop_privileges
    raise ValueError('Invalid process ID: ' + str(e))
ValueError: Invalid process ID: [Errno 2] No such file or directory: '/proc/30994'
ERROR: apport (pid 30996) Wed Nov 27 14:00:22 2013: pid: 30996, uid: 0, gid: 0, euid: 0, egid: 0
ERROR: apport (pid 30996) Wed Nov 27 14:00:22 2013: environment: {}

上面的错误信息提示我的程序已经退出了,所以无法生成core文件,请问有大神遇见过这样的问题吗,如何才能生成core文件。
十分感谢。
------解决方案--------------------
没看明白,不过你试试自定义core文件生成路径
core file生成的地方是在/proc/sys/kernel/core_pattern文件定义的
例如:echo "/tmp/core-%e-%p" > /proc/sys/kernel/core_pattern