使用 python
解释器和/或 pdb
,我们可以运行程序并在遇到错误时暂停,以便我可以检查调用堆栈的所有帧崩溃时的程序?
当我直接在 python
解释器中运行一个程序时,遇到错误时,它会告诉它发生的代码行的位置,但它似乎返回到最顶层的框架,我无法检查实际发生错误的帧。例如
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "test.py", line 194, in <module>
addlevel(root_toc, 0)
File "test.py", line 191, in addlevel
addlevel(child, root_level+1)
File "test.py", line 188, in addlevel
root.value.append(root_level)
AttributeError: 'str' object has no attribute 'append'
>>> root_level
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'root_level' is not defined
错误发生在最低帧,我无法在该帧检查 root_level
的值。是因为错误发生后返回到最顶层的帧吗?如何查看最低帧?
谢谢。
最佳答案
将 pdb 作为模块运行,传递要调试的脚本。它会在异常导出处中断。 (这在 the docs 中提到过。)
python -m pdb my_script.py
如果你在解释器中,你可以使用pdb.pm()
调试最后的回溯。
或者,使用 IPython 解释器。打字debug
在未捕获的异常之后将进入 pdb session 以进行最后的回溯,类似于 pm()
。
关于python - 使用 pdb,如何运行程序并在遇到错误时暂停?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25799208/