我试图调试我的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:\...>
有什么提示,在哪里或如何解决?在
谢谢。 纳科
最后,我通过尝试在Linux机器上运行应用程序找到了解决方案。在Windows上运行(不使用PDB)不会导致任何错误。Linux在尝试运行命令
python application.py
时显示了此输出:所以我发现这个奇怪的地方是因为一个不可打印的字符“\xfc”隐藏在注释行的某个地方。删除行并重新键入其内容解决了问题。尽管我不知道这是如何可能导致上述异常消息的线索。在
希望有一天这会对某些人有所帮助。在
谢谢。 纳科
相关问题 更多 >
编程相关推荐