应用程序崩溃,但没有生成核心转储

Tha*_*raj 6 c linux gdb suse opensuse

我有一个问题,我的应用程序在几天/几周后继续倾销核心,但不幸的是,没有产生核心转储.

我们试图设置ulimit -c unlimited没有成功,所以我们setrlimit在代码本身中包含了功能,但也没有运气.最重要的是,我们也添加了MALLOC_CHECK_.

有趣的是,当我们尝试启动手动核心转储(使用kill -ABRT <pid>)时,它确实生成了核心转储.

我可以看到以下消息 /var/log/message

内核:[2302077.396021] myapp [22140]:segfault at 54552e42 ip 00000000f773f36f sp 00000000fffdc48c error 4 in ld-2.11.3.so [f7727000 + 1f000]

环境:sles11

有关如何使应用程序更可靠地生成核心转储的任何建议?

von*_*and 4

当前的许多系统都经过配置,因此不会留下核心转储(普通用户不知道如何处理它们)。

  • 确保您启动可以转储核心的进程(可写目录,足够的空间;我不确定进程中的目录更改是否可能会干扰这里)
  • 确保在启动进程的同一个 shell 中给出“ulimit -c unlimited”
  • 如果程序是 SUID 或 SGID,出于安全原因,内核将拒绝使其转储核心,请查看此问题以获取指导