为啥我的程序的核心转储在安装在 Linux 中的 NTFS 分区上运行时总是零字节?

Posted

技术标签:

【中文标题】为啥我的程序的核心转储在安装在 Linux 中的 NTFS 分区上运行时总是零字节?【英文标题】:Why is my program's core dump always zero bytes, when run on an NTFS partition mounted in Linux?为什么我的程序的核心转储在安装在 Linux 中的 NTFS 分区上运行时总是零字节? 【发布时间】:2011-08-16 09:31:21 【问题描述】:

我正在尝试从我正在编写的代码中获取可用的核心转储。我的源位于我在 Windows 和 Linux 操作系统之间共享的 NTFS 分区上。我正在 Linux 下进行开发,并在我的 bash shell 中设置了ulimit -c unlimited。当我在 NTFS 分区上的项目目录中执行代码并故意导致 SIGSEGV 或 SIGABRT 时,系统会写入一个零字节的核心转储文件。

如果我在我的主目录(一个 ext4 分区)中执行二进制文件,核心转储就可以生成。我查看了man page for core,它列出了不生成核心转储文件的各种情况。但是,我认为这不是权限问题,因为该分区上的所有文件和目录都具有完全权限 (chmod 777)。

任何帮助或想法表示赞赏。

【问题讨论】:

你是用内核ntfs还是用户空间ntfs-3g挂载分区的? 【参考方案1】:

也许你应该检查这个文件(/proc/sys/kernel/core_pattern)

【讨论】:

【参考方案2】:

应用程序所在的目录是另一个 linux 机器的挂载点。核心文件不能写入已安装的驱动器,但必须写入本地驱动器。

http://www.experts-exchange.com/OS/Linux/Q_23677186.html

您可以创建 ram 磁盘并将核心转储放在 ram 磁盘上。

【讨论】:

请不要链接到experts-exchange.com,因为我们需要注册才能看到答案。 It would be preferable 在这里包含答案的基本部分,并提供链接以供参考。 我不会质疑您答案的准确性,但不幸的是它没有回答这个问题。 OP 没有询问 是否 可以编写核心文件;他们在问为什么它不能。可能答案包含在您发布的链接中,但我没有专家交流的会员资格,所以我看不到它(正如@j0k 指出的那样)【参考方案3】:

您的 ntfs 分区是否有足够的可用空间来生成核心转储? 你的 ntfs 分区挂载了读/写权限(不仅仅是读)吗?

【讨论】:

是的,是的。大约。 48GB 可用空间,分区已安装 rw:/dev/sda5 on /mnt/data type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096)

以上是关于为啥我的程序的核心转储在安装在 Linux 中的 NTFS 分区上运行时总是零字节?的主要内容,如果未能解决你的问题,请参考以下文章

Linux 中的核心转储

Linux C 仅对我的程序禁止核心转储

为啥我在 C 中收到警告“分段错误,核心转储”

为啥我的代码结果显示分段错误(核心转储)?

为啥这个核心转储错误发生在我的课堂上?我已经包含了复制构造函数、复制赋值和析构函数

为啥 STL 在 find 上映射核心转储?