My Java(Eclipse)应用程序正在生成子进程,监视其stdout流和退出值。当子进程与SIGABRT崩溃时,没有创建核心转储文件。如果我手动启动子进程并将其终止,那么核心转储就没问题了。
我找不到有关JVM是否以某种方式准备子进程的任何信息(例如将核心转储文件大小设置为0)。
是否有人知道可能会发生什么以及要更改哪些设置以便创建核心转储?
这是在Suse 10和Ubuntu 9.04上,使用Java 5和6,如果它有任何区别。
最好的问候, 维拉德
答案 0 :(得分:3)
通常,核心文件的(非)创建由ulimit
命令(特别是ulimit -c)控制。有关详细信息,请参阅help ulimit
(在bash中)。
此设置应该从shell继承到子shell,因此Java应该使用它从shell启动的设置。 Java可能会破坏ulimit,但我从来没有听说过这样做。
尝试在shell中设置ulimit,然后从那里启动Java进程。如果这没有用,你可以从Java调用一个设置ulimit的包装脚本,然后启动你的程序。