16.7.2 控制调试工具
调试工具的接口是一个很小的命令语言,允许你在调用栈中移动,检查和修改变量的值,以及控制调试工具如何执行程序。这个交互调试工具使用readline接受命令,而且支持对命令、文件名和函数名的tab完成特性。输入一个空行会使其重新运行之前的命令,除非是一个list操作。
16.7.2.1 导航执行栈
调试工具运行的任何时刻,使用where(缩写为w)可以得出正在执行哪一行,以及程序在调用栈的哪个位置。在下述情况下,模块pdb_set_trace.py的go()方法中第22行将停止执行。
要增加当前位置的更多上下文,可以使用list(l)。
默认地会列出包括当前行在内的周围11行(前面5行,后面5行)。如果使用list并提供一个数值参数,则会列出指定行(而不是当前行)周围的11行。
如果list接收两个参数,则会把它们分别解释为第一行和最后一行,包含在其输出中。
longlist (ll)命令打印当前函数或帧的源码,而不必提前确定行号。这个命令名为"longlist",这是因为对于长函数,与list的默认输出相比,它会生成更多的输出。
source命令加载和打印一个任意的类、函数或模块的完整源代码。
可以使用up和down在当前调用栈的帧之间移动。up(缩写为u)向栈中较旧的帧移动。down(缩写为d)则移向较新的帧。每次在栈中上移或下移时,调试工具都会打印当前位置,格式与where生成的输出格式相同。
向up或down传入一个数值参数以便一次在栈中上移或下移指定的步数。