首页 > 编程 > Python > 正文

在Linux下调试Python代码的各种方法

2020-02-23 00:45:42
字体:
来源:转载
供稿:网友

 这是一个我用于调试或分析工具概述,不一定是完整全面,如果你知道更好的工具,请在评论处标记。

日志

是的,的确,不得不强调足够的日志记录对应用程序是多么的重要。您应该记录重要的东西,如果你的记录足够好的话,你可以从日志中找出问题从而节省大量的时间。

如果你曾经用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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表