все
Предположим, у меня есть простая программа JNI в Windows:
int* p = NULL;
*p = 5;
Когда он запускается из JVM, а не как обычное приложение C ++, JVM приятно ловит такое сложное исключение и выполняет некоторую работу по очистке.
Проблема в том, что она также мешает мне генерировать аварийные дампы прямо там, хотя есть опция JVM: -XX: OnError, но дампы ядра, сгенерированные в этот момент, находятся далеко от места преступления, поэтому их трудно отлаживать.
JVM переносит каждый поток Java с помощью SEH:
__try
{
thread.run()
}
__except(topLevelExceptionFilter())
{
}
Код JNI, вызывающий нарушение прав доступа, происходит в thread.run, но обрабатывается в topLevelExceptionFilter, который уже находится где-то еще.
У вас есть предложения?
Спасибо.