Python 可以附带某些宏来编译以启用对解释器和扩展模块的额外检查。 这些检查会给运行时增加大量额外开销因此它们默认未被启用。
各种调试构建版的完整列表见 Python 源代码颁发包中的 Misc/SpecialBuilds.txt。 可用的构建版有支持追踪引用计数,调试内存分配器,或是对主解释器事件循环的低层级性能分析等等。 本节的剩余部分将只介绍最常用的几种构建版。
附带定义 Py_DEBUG 宏来编译解释器将产生通常所称的 Python 调试编译版。 Py_DEBUG 在 Unix 编译中启用是通过添加 --with-pydebug 到 ./configure 命令来实现的。 它也可通过提供非 Python 专属的 _DEBUG 宏来启用。 当 Py_DEBUG 在 Unix 编译中启用时,编译器优化将被禁用。
除了下文描述的引用计数调试,还会执行额外检查,请参阅 Python Debug Build。
定义 Py_TRACE_REFS 将启用引用追踪 (参见 configure --with-trace-refs 选项)。 当定义了此宏时,将通过在每个 PyObject 上添加两个额外字段来维护一个活动对象的循环双链列表。 总的分配量也会被追踪。 在退出时,所有现存的引用将被打印出来。 (在交互模式下这将在解释器运行每条语句之后发生)。
有关更多详细信息,请参阅Python源代码中的 Misc/SpecialBuilds.txt 。 |