最近,当将pdb
调试器添加到我的Python 2.7.10代码中时,出现以下消息:
Traceback (most recent call last):
File "/Users/isaachess/Programming/vivint/Platform/MessageProcessing/vivint_cloud/queues/connectors/amqplib_connector.py", line 191, in acking_callback
callback(message.body)
File "/Users/isaachess/Programming/vivint/Platform/MessageProcessing/vivint_cloud/queues/consumable_message_queue.py", line 32, in deserialized_callback
self._callback_method(msg)
File "/Users/isaachess/Programming/vivint/Platform/BusinessLogic/businesslogic/util/statsd_util.py", line 95, in _time_func
retVal = f(*args, **kwargs)
File "/Users/isaachess/Programming/vivint/Platform/MessageProcessing/vivint_cloud/net/router.py", line 226, in handle
try:
File "/Users/isaachess/Programming/vivint/Platform/MessageProcessing/vivint_cloud/net/router.py", line 226, in handle
try:
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/bdb.py", line 49, in trace_dispatch
return self.dispatch_line(frame)
File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/bdb.py", line 68, in dispatch_line
if self.quitting: raise BdbQuit
BdbQuit
这是在插入行之后:import pdb; pdb.set_trace()
在代码中。我不知道为什么会这样。我已经阅读了Bdb和Bdbquit,但是无法弄清楚为什么这会在我的代码中发生。谁能为我提供一些提示,说明为什么这种情况普遍发生?我真的很想让调试器重新工作。
最佳答案
当我在生产代码中保留import pdb
和pdb.set_trace()
时遇到了这个问题。当执行pdb.set_trace()
行时,python正在等待我的输入以将其告知c
,然后继续执行,等等。由于网络服务器正在调用python代码,因此我不在那里按c
继续。这么长时间(不确定多长时间)后,它最终引发了BdbQuit
异常。
我没有任何设置来捕获该异常,因此它在我的Web服务器中引发了500。
我花了一段时间才了解到我在守护程序/后台运行的调试代码是造成此问题的原因。我觉得很傻。
关于python - 使用pdb调试Python时引发BdbQuit,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34914704/