the*_*G27 2 java android opengl-es segmentation-fault
在我的Android OpenGL ES项目中,我最近在着色器代码中出现错误,这显然在此处的OpenGL线程中引起了“致命信号11(SIGSEGV)”:
GLES32.glCompileShader(glShaderHandle);
Run Code Online (Sandbox Code Playgroud)
我解决了该错误,它再次正常运行,但是我很难找出该错误的出处。当然,我尝试像这样“捕获”着色器错误:
GLES32.glGetShaderiv(glShaderHandle, GLES32.GL_COMPILE_STATUS, result, 0);
Run Code Online (Sandbox Code Playgroud)
但是在发生SIGSEGV错误的情况下,Java代码甚至都没有达到这一点。另外尝试使用try / catch捕获错误也没有用。该应用程序仍然崩溃。我猜错误发生在本机C代码中。
有没有办法处理来自Java代码的此类错误,以防止应用程序崩溃?
你抓不到。这是段错误。它在C中崩溃。它没有变成Java堆栈跟踪,它被Linux视为硬故障,并且该应用程序立即终止。
您也许可以编写C信号处理程序并进行一些处理,但是我真的不建议这样做。从那时起,您将无法以任何方式继续运行该应用程序,因为该应用程序现在处于未定义状态。
如果您确实想尝试该操作(我真的不建议这样做),请阅读如何编写信号处理程序以捕获SIGSEGV?有关问题的概述。
| 归档时间: |
|
| 查看次数: |
295 次 |
| 最近记录: |