1. 一个鼓舞人心的例子
嵌入式 Python 已经存在有一段时间了。你可能已经按照教程学习过它。然而,如果你曾在实际开发工作中尝试将 Python 与 ObjectScript 结合使用,你可能遇到过出现如下错误信息的情况:
USER>Do##class
这是一段信息量有限的冗长字符串。从这条消息中,我们仅能得知:发生了 Python 错误,其中(a)错误类型为 ZeroDivisionError;(b)错误消息为 "division by zero"。
那么,对于我们开发者来说,这些信息是否足够了呢?
其实,有经验的开发者会搜索Python代码中所有出现除法运算的位置。如果代码库中的Python代码量有限,或者涉及的除法运算数量有限,这绝对是可以调试的。 但是,如果我们面对的是一个包含大量 Python 代码的代码库,且对该代码库不够熟悉,无法根据错误类型和错误信息缩小搜索范围,那该怎么办?那简直就是一场噩梦!
在本文中,我们将深入探讨如何调试那些深埋在嵌入式 Python 调用堆栈中的错误。
2. 一些行不通的方法
你可能会想尝试各种调试技巧。但在开始“折腾”之前,先来看看一些已知行不通的方法。
2.1 使用 Python 的 sys.excepthook
如果你熟悉 Python,可能知道 Python 会在每次发生未处理的错误时(即未被 代码块捕获的错误)调用 sys.excepthook()



