你有什么建议摆脱生产软件上的pdb调用? 就我而言,我正在开发一个django网站。
我不知道我是否应该:
答案 0 :(得分:3)
第三个。您必须执行一些提交规则。例如,在提交之前运行一系列测试等。这样,开发人员可以通过一种简单的方法来检查pdb中断是否仍然存在。如果某人提交了set_trace,他必须为团队的其他成员烘烤蛋糕。
这在我公司很好用: - )
编辑:您可以将此方法作为CDD(Cake Driven Developpement)提交给您的老板
答案 1 :(得分:1)
最好的选择是拥有一个广泛的测试套件,并在推送到生产之前运行测试。无关的pdb
断点将阻止测试通过。
如果你不能这样做,那么选项2是最好的:编写一个实用程序来打入调试器,并使其对设置状态敏感。您仍然必须解决如何确保人们使用包装器而不是原始pdb
调用的问题。
答案 2 :(得分: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 [~]$