三,运行时阶段
运行时出现的问题是比较难查的。
其中一些问题可能是:
- 应用程序发送了错误的请求
- 应用程序未发送请求
- 驱动问题
- OpenGL函数调用异常
我们可以使用一些调试工具或通过slog2info打印的日志排查问题。
3.1 请求
我们可以通过持久化保存/dev/screen/requests 文件的内容来找出从客户端发送到服务器的请求。 如果在 graphics.conf 中禁用此文件,或者在配置文件中明确禁用此文件,则此文件可能不存在。 该文件中可能有很多请求。 请求日志大小通常设置为 64 KB,如果请求日志内容刷新过快,则无法及时获取有效信息。可以通过修改日志buffer的大小。 有关更多详细信息,请参阅配置屏幕的配置全局子节。
/dev/screen/requests 文件是二进制格式。它实际上指向一个环形缓冲区,其中保存了接收到的消息。要理解这种二进制格式,可以使用 screeninfo 工具。
查询请求的命令如下:
# screeninfo /dev/screen/requests
其内容如下:
context=15;subtype=WIN_GET_EVENT;timeout=-1 [EOK]
context=14;subtype=WIN_GET_EVENT;timeout=-1 [EOK]
context=5;subtype=WIN_GET_EVENT;timeout=-1 [EOK]
context=13;subtype=WIN_TRANSACT;parts={subtype=WIN_SET_PROPERTY;win-14;SCREEN_PROPERTY_VISIBLE=1