当输入回调函数时,PDB中突然出现异常

2024-05-14 16:54:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图调试我的python应用程序,它使用“mailbot”模块和触发的用户回调。当收到特定的电子邮件时,就会触发这些事件。昨天PDB的调试工作做得很好。但今天看来世界已经变了。。。我不记得从昨天开始我是否更改过任何相关的代码,但是当我在PDB设置中调用我的应用程序时,它会导致许多我不知道如何解释的异常。在

当省略PDB并用python application.py启动应用程序时,应用程序运行良好。因此(错误消息也提示了这一点),问题似乎与我的应用程序、回调的使用或mailbot模块没有任何关系。在

以下是错误消息之前的故事。对不起,好像很长时间。在

在PDB模式下启动python…

C:\...> python -m pdb application.py
> c:\...\application.py(2)<module>()
-> from __future__ import print_function

将断点设置为异常前一步…

^{pr2}$

开始执行直到断点…

(Pdb) c
> c:\progs\python34\lib\site-packages\mailbot\mailbot.py(52)process_message()
-> return callback.trigger()

显示相关列表…

(Pdb) l
 47
 48         def process_message(self, message, callback_class, rules):
 49             """Check if callback matches rules, and if so, trigger."""
 50             callback = callback_class(message, rules)
 51             if callback.check_rules():
 52 B->             return callback.trigger()
 53
 54         def process_messages(self):
 55             """Process messages: check which callbacks should be triggered."""
 56             from . import CALLBACKS_MAP
 57             self.reset_timeout_messages()

正在检查下一个语句…

(Pdb) callback.trigger
<bound method cbLookUpMindmapAndSendText.trigger of <callbacks.cbLookUpMindmapAndSendText object at 0x02EB95B0>>

进入回拨…

(Pdb) s
--Call--
Traceback (most recent call last):
  File "C:\PROGS\Python34\lib\pdb.py", line 1661, in main
    pdb._runscript(mainpyfile)
  File "C:\PROGS\Python34\lib\pdb.py", line 1542, in _runscript
    self.run(statement)
  File "C:\PROGS\Python34\lib\bdb.py", line 431, in run
    exec(cmd, globals, locals)
  File "<string>", line 1, in <module>
  File "c:\...\application.py", line 25, in <module>
    mailbox.process_messages()
  File "C:\PROGS\Python34\lib\site-packages\mailbot\mailbot.py", line 64, in process_messages
    self.process_message(message, callback_class, rules)
  File "C:\PROGS\Python34\lib\site-packages\mailbot\mailbot.py", line 52, in process_message
    return callback.trigger()
Traceback (most recent call last):
  File "C:\PROGS\Python34\lib\pdb.py", line 1661, in main
    pdb._runscript(mainpyfile)
  File "C:\PROGS\Python34\lib\pdb.py", line 1542, in _runscript
    self.run(statement)
  File "C:\PROGS\Python34\lib\bdb.py", line 431, in run
    exec(cmd, globals, locals)
  File "<string>", line 1, in <module>
  File "c:\...\application.py", line 25, in <module>
    mailbox.process_messages()
  File "C:\PROGS\Python34\lib\site-packages\mailbot\mailbot.py", line 64, in process_messages
    self.process_message(message, callback_class, rules)
  File "C:\PROGS\Python34\lib\site-packages\mailbot\mailbot.py", line 52, in process_message
    return callback.trigger()
  File "C:\...\callbacks.py", line 20, in trigger
  File "C:\PROGS\Python34\lib\bdb.py", line 50, in trace_dispatch
    return self.dispatch_call(frame, arg)
  File "C:\PROGS\Python34\lib\bdb.py", line 82, in dispatch_call
    self.user_call(frame, arg)
  File "C:\PROGS\Python34\lib\pdb.py", line 249, in user_call
    self.interaction(frame, None)
  File "C:\PROGS\Python34\lib\pdb.py", line 345, in interaction
    self.print_stack_entry(self.stack[self.curindex])
  File "C:\PROGS\Python34\lib\pdb.py", line 1447, in print_stack_entry
    self.format_stack_entry(frame_lineno, prompt_prefix))
  File "C:\PROGS\Python34\lib\bdb.py", line 411, in format_stack_entry
    line = linecache.getline(filename, lineno, frame.f_globals)
  File "C:\PROGS\Python34\lib\linecache.py", line 15, in getline
    lines = getlines(filename, module_globals)
  File "C:\PROGS\Python34\lib\linecache.py", line 41, in getlines
    return updatecache(filename, module_globals)
  File "C:\PROGS\Python34\lib\linecache.py", line 127, in updatecache
    lines = fp.readlines()
  File "C:\PROGS\Python34\lib\codecs.py", line 319, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 351: invalid start byte

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\PROGS\Python34\lib\runpy.py", line 170, in _run_module_as_main
    "__main__", mod_spec)
  File "C:\PROGS\Python34\lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\PROGS\Python34\lib\pdb.py", line 1685, in <module>
    pdb.main()
  File "C:\PROGS\Python34\lib\pdb.py", line 1673, in main
    traceback.print_exc()
  File "C:\PROGS\Python34\lib\traceback.py", line 252, in print_exc
    print_exception(*sys.exc_info(), limit=limit, file=file, chain=chain)
  File "C:\PROGS\Python34\lib\traceback.py", line 169, in print_exception
    for line in _format_exception_iter(etype, value, tb, limit, chain):
  File "C:\PROGS\Python34\lib\traceback.py", line 153, in _format_exception_iter
    yield from _format_list_iter(_extract_tb_iter(tb, limit=limit))
  File "C:\PROGS\Python34\lib\traceback.py", line 18, in _format_list_iter
    for filename, lineno, name, line in extracted_list:
  File "C:\PROGS\Python34\lib\traceback.py", line 65, in _extract_tb_or_stack_iter
    line = linecache.getline(filename, lineno, f.f_globals)
  File "C:\PROGS\Python34\lib\linecache.py", line 15, in getline
    lines = getlines(filename, module_globals)
  File "C:\PROGS\Python34\lib\linecache.py", line 41, in getlines
    return updatecache(filename, module_globals)
  File "C:\PROGS\Python34\lib\linecache.py", line 127, in updatecache
    lines = fp.readlines()
  File "C:\PROGS\Python34\lib\codecs.py", line 319, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 351: invalid start byte

C:\...>

有什么提示,在哪里或如何解决?在

谢谢。 纳科


Tags: inpyselfmessageliblinecallbackprocess
1条回答
网友
1楼 · 发布于 2024-05-14 16:54:13

最后,我通过尝试在Linux机器上运行应用程序找到了解决方案。在Windows上运行(不使用PDB)不会导致任何错误。Linux在尝试运行命令python application.py时显示了此输出:

Traceback (most recent call last):
  File "application.py", line 12, in <module>
    import callbacks
  File "/home/pi/examples/callbacks.py", line 16
SyntaxError: Non-ASCII character '\xfc' in file /home/pi/examples/callbacks.py on line 16, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

所以我发现这个奇怪的地方是因为一个不可打印的字符“\xfc”隐藏在注释行的某个地方。删除行并重新键入其内容解决了问题。尽管我不知道这是如何可能导致上述异常消息的线索。在

希望有一天这会对某些人有所帮助。在

谢谢。 纳科

相关问题 更多 >

    热门问题