这是一个我用于调试或分析工具概述,不一定是完整全面,如果你知道更好的工具,请在评论处标记。
日志
是的,的确,不得不强调足够的日志记录对应用程序是多么的重要。您应该记录重要的东西,如果你的记录足够好的话,你可以从日志中找出问题从而节省大量的时间。
如果你曾经用print语句来调试代码现在停下吧,用logging.debug替代,开始可以慢慢来,以后完全禁用它...
追踪
有时看到程序如何被执行会很有帮助。你可以使用IDE的调试共轭ngn一步一步的运行程序,但你需要知道你要找的是什么,否则这将会是一个漫长的过程。
标准库中有一个 trace模块,可以打印所有执行过程中的内容(像制作 覆盖率报告)。
python -mtrace --trace script.py
这将产生大量输出(每个行会被打印输出,所以你最好通过管道,用grep只看自己感兴趣的部分),例如:
python -mtrace --trace script.py | egrep '^(mod1.py|mod2.py)'-
如果你喜欢新特性,那么你可以尝试 smiley - 它可以显示变量内容变化,还可以用它来远程追踪程序。
PDB
import pdbpdb.set_trace() # opens up pdb prompt
或者:
try: code that failsexcept: import pdb pdb.pm() # or pdb.post_mortem()
或(按键盘C键启动脚本):
python -mpdb script.py
像在REPL中那样:
c or continue q or quit l or list, 在当前界面显示源码 w or where, 显示回溯 d or down, 显示回溯的下一界面 u or up, 显示回溯的上一界面 <enter>, 重复最后一个命令 其他任何东西,在当前界面评估源码 (t还有其他的一些命令) corcontinue qorquit lorlist,显示在当前帧的源 worwhere,显示回溯 dordown,下山1帧回溯 uorup,上升1帧回溯 回车,重复最后一个命令几乎任何东西,评估当前帧的Python代码(还有其他几个命令)
可以替代pdb的:
ipdb (easy_install ipdb) - 像 ipython (自动补齐, 颜色等) pudb (easy_install pudb) - 基于curses (类gui), 浏览源码有很好的表现。远程 PDB
sudo apt-get install winpdb
替代 pdb.set_trace():
import rpdb2rpdb2.start_embedded_debugger("secretpassword")
现在运行Winpdb , 输入密码 到 File > Attach。
不喜欢 Winpdb ? 只要通过 TCP运行 PDB
新闻热点
疑难解答