如何在调试完成后避免在Python开源应用中留下调试器打印/pdb语句?

4 投票
5 回答
1267 浏览
提问于 2025-04-16 08:18

有时候在使用开源软件开发的时候,你需要查看它的源代码(特别是zope/plone)。很多时候,我需要写一些打印语句,或者使用调试工具(比如import pdb),或者注释掉一些try/except的代码,反正就是各种修改。

有时候我打开了很多文件来找问题,但有时我会忘记把这些打印和调试的修改去掉。

所以,我想问的是:你们在做这些事情的时候是怎么保持有条理的?你们会在修改的地方写上“待办事项”,然后之后再去找它们吗?还是说你们会把所有文件都打开,当找到想要的内容后就把文件恢复到之前的状态?(这种方法在找特别大的问题时就不太好用了,因为可能需要几天时间,你得关掉电脑,等到第二天再来。)或者你们根本就不在意,因为在开发环境中打印语句也没什么大不了的?

我在用Vim。我只是想知道其他程序员是怎么处理这个问题的。

5 个回答

2

很高兴有人开始讨论这个话题。是的,有时候我也遇到过这种情况。我把那些调试文件(pdb)留在了代码里,然后把代码提交到了中央代码库,也就是git。我用的是'emacs'这个编辑器。所以,在提交代码之前,我通常会在文件里搜索一下有没有pdb文件。不过,检查每个文件真的很麻烦。因此,在提交代码之前,我会非常仔细地检查代码的差异。我也在寻找更好的方法来解决这个问题。

4

在我自己的项目中,源代码总是放在版本控制里。在提交之前,我总是先查看图形化的差异,这样我就能看到哪些地方改动了,提交信息应该写什么,以及是否可以把提交拆分成更小的部分。这样一来,我几乎总能发现一些临时的无用代码,比如打印语句。如果没发现,我通常会在之后不久注意到,并且如果还没推送的话,可以撤销提交(这在像git和bzr这样的分布式版本控制系统中有效,但在subversion中不行)。

对于那些需要几天才能解决的问题,我也是一样的做法。我不会提交,直到问题解决,然后再查看差异。

在这种情况下,如果有一个文本编辑器可以在图形化差异视图中直接编辑,那就太好了。不过我主要使用的是Eclipse,它不支持这个功能。

4

我以前经常遇到这个问题。现在,在我提交代码的时候,我会运行一个查找和grep的组合脚本,来寻找我添加的调试语句。唯一需要注意的是,我必须保持我添加的调试语句的一致性,这样grep才能找到它们。

大概是这样的:

## pre-checkin_scan.bin
find . -name "*.py" -exec grep -H --file=/homes/js/bin/pre-checkin_scan_regexp_list.grep {} \;



## pre-checkin_scan_regexp_list.grep
## (The first pattern is to ignore Doxygen comments)

^##[^@]
pdb
^ *print *( *" *Dbg
^ *print *( *" *Debug
^ *debug

撰写回答