假设我有一个引发意外异常的函数,所以我将它包装在ipdb中:
def boom(x, y):
try:
x / y
except Exception as e:
import ipdb; ipdb.set_trace()
def main():
x = 2
y = 0
boom(x, y)
if __name__ == '__main__':
main()
Run Code Online (Sandbox Code Playgroud)
我可以向上移动堆栈以找出x和y具有的值:
$ python crash.py
> /tmp/crash.py(6)boom()
5 except Exception as e:
----> 6 import ipdb; ipdb.set_trace()
7
ipdb> u
> /tmp/crash.py(11)main()
10 y = 0
---> 11 boom(x, y)
12
ipdb> p y
0
Run Code Online (Sandbox Code Playgroud)
但是,在调试时,我想把调试器放在最顶层:
def boom(x, y):
x / y
def main():
x = 2
y = 0
boom(x, …Run Code Online (Sandbox Code Playgroud)