Python 如何确保调试配置中没有pdb调用?
您建议如何消除生产软件上的pdb呼叫? 就我而言,我正在开发一个django网站 我不知道我是否应该:Python 如何确保调试配置中没有pdb调用?,python,django,git,pdb,Python,Django,Git,Pdb,您建议如何消除生产软件上的pdb呼叫? 就我而言,我正在开发一个django网站 我不知道我是否应该: 来自settings.py的Monkey patch pdb(取决于调试布尔值) 为我们的项目制作一个pdb包装器,如果DEBUG=True,它将公开set_trace或打印基本日志 在git钩子上释放制动点。。。(如果你认为这是最好的主意,你会怎么做?) 最好的选择是拥有一个广泛的测试套件,并在投入生产之前运行测试。无关的pdb断点将阻止测试通过 如果您不能做到这一点,那么选项2是最好的:
- 来自settings.py的Monkey patch pdb(取决于调试布尔值)李>
- 为我们的项目制作一个pdb包装器,如果DEBUG=True,它将公开set_trace或打印基本日志
- 在git钩子上释放制动点。。。(如果你认为这是最好的主意,你会怎么做?)
- 最好的选择是拥有一个广泛的测试套件,并在投入生产之前运行测试。无关的
pdb
断点将阻止测试通过
如果您不能做到这一点,那么选项2是最好的:编写一个实用程序来进入调试器,并使其对设置的状态敏感。您仍然需要解决如何确保人们使用包装而不是原始的
pdb
调用的问题。第三个问题。您必须强制执行一些提交规则。例如,在提交之前运行一系列测试,等等。这样,开发人员就有了一种简单的方法来检查pdb中断是否仍然存在。如果有人犯了一套错误,他必须为团队的其他成员烤一块蛋糕
这在我的公司很管用:-)
编辑:您可以将此方法作为CDD(蛋糕驱动开发)呈现给上司理想情况下,您不应该首先包含调试代码。您可以使用一个包装器来设置断点并调用主程序进行调试,这样主程序就根本不包含实际的
set\u trace()
调用
# foo.py
print "hello"
print "goodbye"
及
例如:
[~]$ 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
[~]$
[~]$python foo.py
你好
再见
[~]$python foo.py
> (1)()
(Pdb)继续
你好
>/home/dbornide/foo.py(1)()
->打印“再见”
(Pdb)继续
再见
[~]$
我可以补充一点,在我的团队中,蛋糕必须是柠檬派。我建议你也这么做。我喜欢这个概念。。。我真的需要向我们的团队提出建议。也许我会忽略把蛋糕变成柠檬派。。。 [~]$ 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 [~]$