相关疑难解决方法(0)

如何从堆栈跟踪中提取局部变量?

假设我有一个引发意外异常的函数,所以我将它包装在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)

python pdb ipdb

6
推荐指数
1
解决办法
758
查看次数

标签 统计

ipdb ×1

pdb ×1

python ×1