在我的安卓OpenGL ES项目中,最近在着色器代码中出现了一个错误,这显然导致OpenGL线程中的“致命信号11(SIGSEGV)”:
GLES32.glCompileShader(glShaderHandle);
我已经解决了错误,现在它可以正常工作了,但是我花了很长时间才找出这个错误来自哪里。当然,我试图像这样捕捉shader错误:
GLES32.glGetShaderiv(glShaderHandle, GLES32.GL_COMPILE_STATUS, result, 0);
然而,在出现SIGSEGV错误的情况下,Java代码甚至没有到达那个点。尝试使用try/catch捕获错误也没有起作用。无论如何,应用程序仍然崩溃。我猜这个错误发生在本地c代码中。
有没有一种方法可以从Java代码处理此类错误,以防止应用程序崩溃?