我希望我能提供一个使用标准库代码发生的简单示例,但不幸的是,只有在使用我们内部库之一时才会发生这种情况,而这些库又建立在sql炼金术之上。
基本上,问题是这个break
命令:
(Pdb) print sqlalchemy.engine.base.__file__
/prod/eggs/SQLAlchemy-0.5.5-py2.5.egg/sqlalchemy/engine/base.py
(Pdb) break /prod/eggs/SQLAlchemy-0.5.5-py2.5.egg/sqlalchemy/engine/base.py:946
pdb
似乎完全被忽略了。就像在,即使我肯定代码被击中(因为我可以看到日志消息,因为我使用sys.settrace
来检查哪些文件被命中),pdb
并没有在那里打破。
我怀疑以某种方式使用鸡蛋会使pdb
混淆使用哪些文件(如果我使用非鸡蛋库,我就无法重现错误,例如{{1}一切正常)。
这是一个黑暗中的镜头,但有没有人遇到过这个?
答案 0 :(得分:0)
我想知道是否有某种旧的.pyc由于权限被搞砸而无法删除。在python-path中解压所有.pycs,看看是否有帮助。
This blog post可能与您的麻烦有关。
答案 1 :(得分:0)
我不认为这是setuptools引起的另一个问题?我问,因为我注意到那条路上的“.egg”......
答案 2 :(得分:0)
正在运行什么版本的python?我在python 2.7.3上观察到类似的行为。奇怪的是,我不在ipython 0.12.1上看到了相同的行为。
在python 2.7.3中,调试器和堆栈跟踪得到错误发生的点。
在ipython 0.12.1中,调试器和堆栈跟踪得到发生异常的点是正确的,但是一旦发生异常,程序就会退出,这使得事后调试变得困难。