Файл журнала сбоя JVM содержит всевозможную полезную информацию для отладки, такую как загруженные разделяемые библиотеки и всю среду. Могу ли я заставить JVM сгенерировать один из них программно; либо путем выполнения кода, который приводит к сбою, либо другим способом? Или получить доступ к той же информации другим способом?




Я почти уверен, что это можно сделать с помощью IBM JDK, поскольку некоторое время назад я экспериментировал с их анализатором стека. Один из вариантов принудительного создания дампа - это просто вызвать исключение outOfMemoryException.
Эти инструменты могут дать некоторые подсказки http://www.ibm.com/developerworks/java/library/j-ibmtools1/
Взгляните на Инструменты разработки JDK, в частности Инструменты для устранения неполадок для сброса кучи, печати информации о конфигурации и т. д.
Из инструментов jstack кажется наиболее многообещающим в форме jstack -l -F -m <pid> (-F не нужен, если процесс не завис). Это дает вам стеки всех потоков в смешанном режиме (Java и собственный) и заблокированные синхронизаторы, даже если процесс завис.
Или см. docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/… для Oracle Java 8 (предыдущие ссылки - 6, но, вероятно, не сильно отличается по содержанию).
Вы можете попробовать выбросить OutOfMemoryError и добавить аргумент jvm -XX: + HeapDumpOnOutOfMemoryError. Это новинка версии 1.6, как и другие инструменты, предложенные МакДауэллом. http://blogs.oracle.com/watt/resource/jvm-options-list.html
См. Также stackoverflow.com/questions/5576672/…
Этот другой вопрос, похоже, касается дампа ядра, который можно отправить разработчику JVM, например IBM, а не hs_err_pid*.log.
Ссылка, похоже, касается инструмента, доступного только клиентам IBM, к которым я не принадлежу.