2011-08-11 75 views
3

你有什麼建議擺脫生產軟件上的pdb調用? 就我而言,我正在開發一個django網站。如何確保沒有調試配置沒有pdb調用?

我不知道我是否應該:從settings.py

  • 猴補丁PDB(上DEBUG布爾dependding)。
  • 爲我們的項目,這暴露set_trace或打印基本日誌如果DEBUG =上git的鉤子真正
  • Dissalow comitting brakpoints ......一個PDB包裝(如果你認爲這是你會怎麼做,最好的想法?)。

回答

3

第三個。你必須執行一些提交規則。例如,在提交之前運行一系列測試等。這樣,開發人員可以通過一種簡單的方法來檢查是否保留pdb中斷。如果有人犯了set_trace,他必須爲團隊的其他成員燒餅。

這工作正常,在我公司:-)

編輯:您可能會出現這種方法給你的老闆爲CDD(蛋糕驅動發展協會),

+0

我想補充一點,我的團隊,蛋糕必須是一個檸檬餡餅。我建議你這樣做。 – Simon

+0

我喜歡這個概念......我真的需要向我們的團隊推薦它。也許我會忽略強制蛋糕成爲檸檬派...... – christophe31

1

最好的選擇是擁有一個廣泛的測試套件,並在推向生產之前運行測試。多餘的pdb斷點將阻止測試通過。

如果你不能做到這一點,那麼選項2是最好的:編寫一個實用程序來闖入調試器,並使其對設置狀態敏感。您仍然必須解決如何確保人們使用包裝的問題,而不是原始pdb調用。

0

理想情況下,你不應該包括調試代碼首先。您可以使用一個封裝器來設置斷點並調用主程序進行調試,以便主程序根本不包含實際的set_trace()調用。

# foo.py 
print "hello" 
print "goodbye" 

#debug_foo.py 
import pdb 

def run_foo(): 
    execfile('foo.py') 

db = pdb.Pdb() 
db.set_break("foo.py", 2) 
db.run("run_foo()") 

例子:

 

[~]$python foo.py 
hello 
goodbye 
[~]$python foo.py 
> <string>(1)<module>() 
(Pdb) continue 
hello 
> /home/dbornside/foo.py(1)<module>() 
-> print "goodbye" 
(Pdb) continue 
goodbye 
[~]$