gcc调试,分段错误(核心转储)但没有核心

nom*_*cME 7 c debugging gcc

它曾经是我Segmentation Fault没有核心,然后我将-ggdb添加到编译命令并在执行gcc之前在bash中执行此命令:

ulimit -c unlimited
Run Code Online (Sandbox Code Playgroud)

一段时间都很好(我有一个核心),但现在我得到Segmentation Fault (core dumped)了gcc命令发出的目录中没有核心?可能会去别的地方吗?我还能尝试什么?

一点额外的信息:

  1. 操作系统:Gentoo Linux
  2. 在运行的内核中启用了启用ELF核心转储.
  3. 该应用程序是一个用gtk +编写的文本编辑器

答: 我发现了两种方式:

  1. find / -name "core" -ls
  2. 至于torek建议:

    $ strace ./executable> output.txt 2>&1

    $ grep chdir output.txt

tor*_*rek 7

正如@JonathanLeffler所说,核心转储进入当前目录.

您可以使用strace查看进程是否已完成chdir().遗憾的是,strace它没有显示核心转储本身的位置,但是:

$ cat crash.c
int main(void) {
    chdir("/tmp");
    *(int *)0 = 0;
    return 0;
}
$ cc -o crash crash.c
$ strace ./crash
execve("./crash", ["./crash"], [/* 53 vars */]) = 0
... [lots of libc trace stuff snipped] ...
chdir("/tmp")                           = 0
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0} ---
+++ killed by SIGSEGV (core dumped) +++
Segmentation fault
$ ls /tmp
Run Code Online (Sandbox Code Playgroud)

现在有一个核心.pid文件在那里.