你有什麼建議擺脫生產軟件上的pdb調用? 就我而言,我正在開發一個django網站。如何確保沒有調試配置沒有pdb調用?
我不知道我是否應該:從settings.py
- 猴補丁PDB(上DEBUG布爾dependding)。
- 爲我們的項目,這暴露set_trace或打印基本日誌如果DEBUG =上git的鉤子真正
- Dissalow comitting brakpoints ......一個PDB包裝(如果你認爲這是你會怎麼做,最好的想法?)。
你有什麼建議擺脫生產軟件上的pdb調用? 就我而言,我正在開發一個django網站。如何確保沒有調試配置沒有pdb調用?
我不知道我是否應該:從settings.py
第三個。你必須執行一些提交規則。例如,在提交之前運行一系列測試等。這樣,開發人員可以通過一種簡單的方法來檢查是否保留pdb中斷。如果有人犯了set_trace,他必須爲團隊的其他成員燒餅。
這工作正常,在我公司:-)
編輯:您可能會出現這種方法給你的老闆爲CDD(蛋糕驅動發展協會),
最好的選擇是擁有一個廣泛的測試套件,並在推向生產之前運行測試。多餘的pdb
斷點將阻止測試通過。
如果你不能做到這一點,那麼選項2是最好的:編寫一個實用程序來闖入調試器,並使其對設置狀態敏感。您仍然必須解決如何確保人們使用包裝的問題,而不是原始pdb
調用。
理想情況下,你不應該包括調試代碼首先。您可以使用一個封裝器來設置斷點並調用主程序進行調試,以便主程序根本不包含實際的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 [~]$
我想補充一點,我的團隊,蛋糕必須是一個檸檬餡餅。我建議你這樣做。 – Simon
我喜歡這個概念......我真的需要向我們的團隊推薦它。也許我會忽略強制蛋糕成爲檸檬派...... – christophe31