最近,当将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 pdbpdb.set_trace()时遇到了这个问题。当执行pdb.set_trace()行时,python正在等待我的输入以将其告知c,然后继续执行,等等。由于网络服务器正在调用python代码,因此我不在那里按c继续。这么长时间(不确定多长时间)后,它最终引发了BdbQuit异常。

我没有任何设置来捕获该异常,因此它在我的Web服务器中引发了500。

我花了一段时间才了解到我在守护程序/后台运行的调试代码是造成此问题的原因。我觉得很傻。

关于python - 使用pdb调试Python时引发BdbQuit,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34914704/

10-13 08:54