2009-10-16 36 views
0

我希望我能提供一個使用標準庫代碼的簡單示例,但不幸的是,它只發生在使用我們的內部庫之一,而這些庫又建立在sql鍊金術基礎之上時。Python pdb沒有正確地打破文件?

基本上,問題是,這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至於什麼文件正在使用(如果我使用非蛋類庫,如pickle,我不能重現錯誤;那裏的一切工作正常) 。

這是黑暗中的一槍,但有誰曾經遇到過這個?

+0

你可以檢查base.py是否是一個真實的文件,或者它是否在zip中 – 2009-10-16 06:20:12

+0

它確實可讀且不壓縮。 – YGA 2009-10-16 18:21:53

回答

0

我不知道是否有一箇舊的.pyc因爲權限被搞亂而無法刪除。去掉python路徑中的所有.pycs,看看是否有幫助。

This blog post可能與您的問題有關。

0

我不認爲這是由setuptools造成的另一個問題嗎?我問,因爲我注意到在那條路上的「.egg」...

0

什麼版本的python正在運行?我在python 2.7.3上觀察到類似的行爲。奇怪的是,我做不是在ipython 0.12.1上看到相同的行爲。

在python 2.7.3中,調試器和堆棧跟蹤得到發生異常的地方錯了。

在ipython 0.12.1中,調試器和堆棧跟蹤得到發生異常的點是正確的,但一旦發生異常,程序就會退出,這使得死後調試變得困難。

+0

我相信它是2.6。 – YGA 2013-02-12 06:22:43