为啥我的程序的核心转储在安装在 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 分区上运行时总是零字节?的主要内容,如果未能解决你的问题,请参考以下文章