gpt4 book ai didi

linux - 未生成核心转储文件

转载 作者:IT老高 更新时间:2023-10-28 12:33:54 25 4
gpt4 key购买 nike

每次我的应用程序崩溃时,都不会生成核心转储文件。我记得几天前,在另一台服务器上 生成了它。我正在使用 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() 而不是使用核心转储处理程序。

关于linux - 未生成核心转储文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7732983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com