java - 从 Java 生成的进程的核心转储

标签 java dump coredump

我的 Java (Eclipse) 应用程序正在生成一个子进程,监视其标准输出流和退出值。当子进程因 SIGABRT 崩溃时,不会创建核心转储文件。如果我手动启动子进程并杀死它,核心转储就在那里。

我找不到任何有关 JVM 是否以某种方式准备子进程的信息(例如将核心转储文件大小设置为 0)。

有人知道可能会发生什么以及需要更改哪些设置才能创建核心转储吗?

这是在 Suse 10 和 Ubuntu 9.04 上,使用 Java 5 和 6,如果有什么区别的话。

最诚挚的问候, 弗拉德

最佳答案

通常,核心文件的(非)创建由 ulimit 命令(特别是 ulimit -c)控制。有关详细信息,请参阅 help ulimit(在 bash 中)。

此设置应从 shell 继承到子 shell,因此 Java 应使用启动它的 shell 中的设置。 Java 可能会搞乱 ulimit,但我从未听说过它这样做。

尝试在 shell 中设置 ulimit,然后从那里启动 Java 进程。如果这没有帮助,您可以从 Java 调用一个包装器脚本来设置 ulimit,然后启动您的程序。

关于java - 从 Java 生成的进程的核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1356723/

相关文章:

c# - 调试 .DMP 时 Visual Studio 2008 不加载符号

linux - 来自 linux 核心转储的线程特定数据

c - 释放动态字符串数组时获取核心转储

java - RxJava 2 Cancellable 和 Disposable 有什么区别?

java - 从正在运行的程序或 Java 中的转储中获取死锁检测

java - 错误 NullPointerException 自定义操作栏

java - 转储 keystore 内容 : Permission denied keytool java_cacerts

python - GDB+Python : Determining target type

java - CouchBase 与 Memcached 混合,失去了大多数 CouchDB 理念和功能?

java - 为什么 addTreeModelListener() 不起作用?