Python的ipdb与' next'的行为不同vs'继续'

时间:2016-05-19 20:09:29

标签: python debugging heisenbug ipdb

我正在寻找奇怪行为的潜在原因。

我观察到的代码已被替换。此外,恢复到它发生的提交现在会产生不同的结果。

我担心这是其他东西的症状,可能会在以后再次出现并咬我。

问题是应用程序会在这个简单的行上崩溃:

if self.user.user_type in [0,1]:

说列表索引超出范围。

在该行之前放置ipdb.set_trace,并运行命令" p self.user.user_type"会正确打印0。

打字" next"会工作。打字" continue"会崩溃,说list index out of range

可能是1/10次尝试," continue"会工作,但会在一条不相关的线上崩溃,但仍然显示上面的行作为错误的原因。

不断打击" next"也会最终崩溃在另一条不相关的线上,但也会显示原来的" if self.user.user_type in [0,1]:"作为错误的来源。

当我第一次遇到这个问题时,我还没有尝试更新ipdb和ipython,但是在更新了这两个提交后现在恢复到该提交仍然会在不相关的行崩溃后在回溯中显示错误的行。无辜线上的崩溃不再发生。

我在C中处理了我公平的内存损坏错误,但我对python来说相对较新,并且不知道可能导致这种情况的原因。

在应用程序中没有什么太疯狂的事情,它只是一个由Tornado处理的http请求,然后启动我的处理程序类,这就是发生这种情况的地方。

没有多线程正在进行。

0 个答案:

没有答案