Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我的 Java (Eclipse) 应用程序正在生成一个子进程,监视其标准输出流和退出值。当子进程因 SIGABRT 崩溃时,没有创建核心转储文件。如果我手动启动子进程并杀死它,核心转储就在那里。
我找不到有关 JVM 是否以某种方式准备子进程的任何信息(例如,将核心转储文件大小设置为 0)。
有谁知道可能发生了什么以及要更改哪些设置以创建核心转储?
这是在 Suse 10 和 Ubuntu 9.04 以及 Java 5 和 6 上,如果有什么不同的话。
最好的问候,弗拉德
通常,核心文件的(非)创建由ulimit命令(特别是 ulimit -c)控制。有关详细信息,请参阅help ulimit(在 bash 中)。
ulimit
help ulimit
这个设置应该从 shell 继承到子 shell,所以 Java 应该使用它启动的 shell 中的设置。Java 可能会与 ulimit 混淆,但我从未听说过它会这样做。
尝试在 shell 中设置 ulimit,然后从那里启动 Java 进程。如果这没有帮助,您可以从 Java 调用一个设置 ulimit 的包装脚本,然后启动您的程序。