linux - 未生成核心转储文件

每次我的应用程序崩溃时,都不会生成核心转储文件。我记得几天前,在另一台服务器上 生成了它。我正在使用 bash 中的屏幕运行应用程序,如下所示:

#!/bin/bash
ulimit -c unlimited
while true; do ./server; done

如您所见,我正在使用 ulimit -c unlimited 如果我想生成核心转储,这很重要,但是当我遇到段错误时它仍然不会生成它。 我怎样才能让它发挥作用?

最佳答案

This link包含一个很好的 list ,为什么不生成核心转储:

  • 内核会大于当前限制。
  • 您没有转储核心(目录和文件)的必要权限。请注意,核心转储被放置在转储进程的当前目录中,该目录可能与父进程不同。
  • 验证文件系统是否可写并且有足够的可用空间。
  • 如果工作目录中存在名为 core 的子目录,则不会转储任何核心。
  • 如果一个名为 core 的文件已经存在但有多个硬链接(hard link),内核将不会转储 core。
  • 验证可执行文件的权限,如果可执行文件启用了 suid 或 sgid 位,核心转储将默认禁用。如果您对文件有执行权限但没有读取权限,情况也是如此。
  • 验证进程未更改工作目录、核心大小限制或可转储标志。
  • 某些内核版本无法转储具有共享地址空间的进程(AKA 线程)。较新的内核版本可以转储此类进程,但会将 pid 附加到文件名中。
  • 可执行文件可能是不支持核心转储的非标准格式。每个可执行格式都必须实现核心转储例程。
  • 段错误实际上可能是内核 Oops,请检查系统日志中是否有任何 Oops 消息。
  • 应用程序调用 exit() 而不是使用核心转储处理程序。

https://stackoverflow.com/questions/7732983/

相关文章:

linux - Crontab 每 15 分钟运行一次,除了凌晨 3 点?

linux - Linux 上的 NuGet : Error getting response st

python - 如何在 Python 中进行并行编程?

python - 如何在当前模块上调用 setattr()?

python - 我什么时候应该使用 ugettext_lazy?

linux - 如何找到今天在 Unix/Linux 中创建的所有文件?

linux - svn over HTTP 代理

php - 如何在 CentOS 6.2 上安装 PHP mbstring

python - 我可以在 pip 要求文件中添加注释吗?

python - Django 设置 ‘SECRET_KEY’ 的目的是什么?