分段错误后清空核心转储文件

Ali*_*Ali 15 linux debugging coredump segmentation-fault sungridengine

我正在运行程序,它被Segmentation fault中断.问题是核心转储文件已创建,但大小为零.

你听说过这样的案件以及如何解决吗?

我在磁盘上有足够的空间.我已经执行ulimit -c unlimited了无限制核心文件的大小 - 运行它或放在提交的批处理文件的顶部 - 但仍然有0字节的核心转储文件.包含这些文件的文件夹的权限是uog + rw,创建的核心文件的权限仅为u + rw.

该程序是由C++编写的,并使用Grid Engine的qsub命令在linux集群上提交,我不知道这些信息是否与此问题相关.

Yur*_*iak 9

设置ulimit -c unlimited开启了转储的生成.默认情况下,核心转储是在nfs上的当前目录中生成的.设置/proc/sys/kernel/core_pattern/tmp/core帮我解决空转储的问题.

Ranjith Ruban评论帮助我开发了这种解决方法.

您用于转储核心的文件系统是什么?

  • 我刚刚在带有映射到 NTFS 驱动器(主机的驱动器)的 vboxsf 文件系统的 Linux VirtualBox 映像上遇到了这个问题。 (3认同)

Ran*_*ndy 5

听起来您正在使用批处理调度程序来启动可执行文件.也许Torque/PBS用来生成你的作业的shell继承了不同的ulimit值?也许调度程序的默认配置不是为了保留核心转储?

您可以直接从命令行运行程序吗?

或者,如果在调用可执行文件之前添加ulimit -c unlimited和/或添加ulimit -s unlimited到PBS批处理脚本的顶部,则可能会覆盖PBS的默认ulimit行为.或者添加'ulimit -c'可以报告限制是什么.

  • 您用于转储核心的文件系统是什么? (2认同)