回溯python_如何在python中恢复旧的回溯?(如倒数第二)

当在Python中调试代码时,如果第一个异常被第二个异常覆盖,原始回溯信息可能会丢失。作者通过一个例子说明了这个问题,其中尝试在IPython中使用pdb调试时,由于未导入pdb模块而引发了NameError。尽管最后的回溯只显示了NameError,但最初的异常(RuntimeError)似乎消失了。博客探讨了是否能够找回这个丢失的回溯信息,并关注在调试过程中如何避免这种情况。
摘要由CSDN通过智能技术生成

我相信你发现自己陷入了这种境地,我想这是没有办法的。

假设您运行了一些引发异常的python代码,那么您希望对此进行研究,但是在执行此操作时意外地引发了另一个异常。如果现在尝试事后调试,您将看到后一个异常的回溯。我的问题是,前者会永远消失吗?在

示例:def my_buggy_function(x):

y = x + 1

raise RuntimeError

第一步:我提出一个错误,我想调试它

^{pr2}$

步骤2:我试图调试错误,但意外地引发了另一个错误(在本例中,我没有加载pdb)pdb.pm() #Oops..

---------------------------------------------------------------------------

NameError Traceback (most recent call last)

/home/user/ in ()

----> 1 pdb.pm()

NameError: name 'pdb' is not defined

import pdb

第三步:现在回溯给我最后一个错误,倒数第二个错误就丢失了。在pdb.traceback.print_last()

Traceback (most recent call last):

File "/usr/lib/python2.7/dist-packages/IPython/core/interactiveshell.py", line 2538, in run_code

exec code_obj in self.user_global_ns, self.user_ns

File "", line 1, in

pdb.pm()

NameError: name 'pdb' is not defined

如果我想在倒数第二个回溯中访问y,它会永远丢失吗?在

注意:我正在使用ipython/ipdb以防有问题

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值