В моем проекте Android OpenGL ES у меня недавно была ошибка в моем шейдерном коде,
который, по-видимому, вызвал «фатальный сигнал 11 (SIGSEGV)» в ветке OpenGL здесь:
GLES32.glCompileShader(glShaderHandle);
Я исправил ошибку, и она снова работает нормально, но мне было трудно выяснить, откуда появилась эта ошибка. Конечно, я пытаюсь «поймать» ошибки шейдера, как это:
GLES32.glGetShaderiv(glShaderHandle, GLES32.GL_COMPILE_STATUS, result, 0);
Но в случае ошибки SIGSEGV код Java даже не дошел до этой точки. Также попытка отловить ошибку с помощью try / catch не сработала. Приложение все равно падает. Я думаю, что ошибка происходит в нативном коде c.
Есть ли способ обработки таких ошибок из кода Java, чтобы предотвратить сбой приложения?