Python pdb没有正确打破文件?

时间:2009-10-16 05:39:53

标签: python pdb

我希望我能提供一个使用标准库代码发生的简单示例,但不幸的是,只有在使用我们内部库之一时才会发生这种情况,而这些库又建立在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}一切正常)。

这是一个黑暗中的镜头,但有没有人遇到过这个?

3 个答案:

答案 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中,调试器和堆栈跟踪得到发生异常的点是正确的,但是一旦发生异常,程序就会退出,这使得事后调试变得困难。