我正在尝试从我正在编写的代码中获取可用的核心转储。我的源位于我在 Windows 和 Linux 操作系统之间共享的 NTFS 分区上。我正在 Linux 下进行开发,并ulimit -c unlimited在我的 bash shell 中进行了设置。当我在 NTFS 分区上执行我的项目目录中的代码,并故意导致 SIGSEGV 或 SIGABRT 时,系统会写入一个零字节的核心转储文件。
如果我在我的主目录(一个 ext4 分区)中执行二进制文件,核心转储生成正常。我查看了 core的手册页,其中列出了不生成核心转储文件的各种情况。但是,我认为这不是权限问题,因为该分区上的所有文件和目录都具有完全权限 ( chmod 777)。
任何帮助或想法表示赞赏。
在C++标准(第27.6.1.3节\ 24)中,对于ignore()IOStreams库中的istream 函数,它暗示如果为'n'提供参数numeric_limits::max(),它将继续忽略字符,直到找到分隔符,甚至超出了streamize的实际最大值(即'n'参数被解释为无限).
对于gcc实现,这确实看起来是如何
ignore()实现的,但是我仍然不清楚这是特定于实现还是由标准强制执行.知道这一点的人是否可以确认标准兼容的iostreams库可以保证这一点?