调试工具
Pyglet包括许多调试路径,可以在应用程序启动期间或之前启用这些路径。开发这些工具主要是为了帮助调试Piglet本身,但是其中一些也可能被证明对理解和调试Piglet应用程序很有用。
每个调试选项都是 pyglet.options 字典。在导入任何其他模块之前,可以直接在词典上设置选项:
import pyglet
pyglet.options['debug_gl'] = False
还可以在导入pyglet之前使用环境变量设置它们。每个选项对应的环境变量是字符串 PYGLET_ 大写选项键的前缀。例如,的环境变量 debug_gl 是 PYGLET_DEBUG_GL 。使用设置或取消设置布尔选项 1 和 0 价值观。
下表中列出了调试环境变量的摘要。
选择权
环境变量
类型
debug_font
PYGLET_DEBUG_FONT布尔尔
debug_gl
PYGLET_DEBUG_GL布尔尔
debug_gl_trace
PYGLET_DEBUG_GL_TRACE布尔尔
debug_gl_trace_args
PYGLET_DEBUG_GL_TRACE_ARGS布尔尔
debug_graphics_batch
PYGLET_DEBUG_GRAPHICS_BATCH布尔尔
debug_lib
PYGLET_DEBUG_LIB布尔尔
debug_media
PYGLET_DEBUG_MEDIA布尔尔
debug_trace
PYGLET_DEBUG_TRACE布尔尔
debug_trace_args
PYGLET_DEBUG_TRACE_ARGS布尔尔
debug_trace_depth
PYGLET_DEBUG_TRACE_DEPTH集成
debug_win32
PYGLET_DEBUG_WIN32布尔尔
debug_x11
PYGLET_DEBUG_X11布尔尔
这个 debug_media 和 debug_font 选项用于调试 pyglet.media 和 pyglet.font 模块。它们的行为依赖于平台,并且仅对pyglet开发人员有用。
其余的调试选项将在下面详细说明。
调试OpenGL
这个 debug_graphics_batch 选项导致所有 Batch 对象在进行任何更改后,在绘制之前将其呈现树转储到标准输出(因此同一树的两个绘制只会转储一次)。这对于调试使用 Group 和 Batch 渲染。
错误检查
这个 debug_gl 选项拦截大多数OpenGL调用和调用 glGetError 之后(它只在这样的调用合法的情况下才会这样做)。如果报告错误,则立即引发异常。
此选项默认情况下处于启用状态,除非 -O 标志(优化)被赋予了Python,或者脚本是从一个py2exe或py2app包中运行的。
追踪
这个 debug_gl_trace 选项会导致将调用的所有OpenGL函数转储到标准输出。当与 debug_gl_trace_args ,还会打印提供给每个函数的参数(如有必要,可将它们缩写,以避免转储大量缓冲区数据)。
跟踪执行
这个 debug_trace 选项启用了Python范围的函数跟踪。这会导致每个函数调用都打印到标准输出。由于仅初始化pyglet就需要大量的函数调用,因此建议在使用此选项时将标准输出重定向到文件。
这个 debug_trace_args 选项还会将参数打印到每个函数调用。
什么时候 debug_trace_depth 大于1每个函数的调用方(S)(以及它们的参数,如果 debug_trace_args 设置)也会打印出来。每个调用方都缩进到被调用方的下方。默认深度为1,指定不打印调用方。
平台特定的调试
这个 debug_lib 选项使每个装入的库的路径打印到标准输出。这是由未记录在案的 pyglet.lib 模块,它在Linux和Mac OS X上有时必须遵循复杂的过程才能找到正确的库。在Windows上,并非所有的库都是通过此模块加载的,因此不会打印它们(但是,加载Windows DLL非常简单,几乎不需要此信息)。
Linux
X11错误被Piglet捕获并被抑制,因为在野外有大量的X服务器生成可以安全地忽略的错误。这个 debug_x11 选项导致将这些错误转储到标准输出,以及对Python堆栈的回溯(这可能与错误对应,也可能不对应,这取决于它是否被异步报告)。
窗口
这个 debug_win32 选项会使所有库调用都进入 user32.dll , kernel32.dll 和 gdi32.dll 被截获。在每次库调用之前 SetLastError(0) 被调用,然后 GetLastError() 被称为。发现的任何错误都会写入一个名为 debug_win32.log 。请注意,只有当被调用的函数返回错误代码时,错误才有效,但拦截函数不检查这一点。