文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python 调试器

2023-01-31 01:52

关注


python 调试器:

使用 pdb 进行调试

pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令,详情见表 1。

表 1. pdb 常用命令


wKiom1aaQfmgn9ovAAAoVgbW4fQ070.png



import pdb

pdb.set_t





下面结合具体的实例讲述如何使用 pdb 进行调试。

清单 1. 测试代码示例
vim pdbtest.py    
#!/usr/bin/env python


import pdb
a = "aapdb"
pdb.set_trace() 
b = "bbbaa"
c = "cccaaa"
final = a + b + c 
print final




 python  pdbtest.py

> /root/pdbtest.py(7)<module>()

-> b = "bbbaa"

(Pdb) 

(Pdb) c

aapdbbbbaacccaaa




开始调试:直接运行脚本,会停留在 pdb.set_trace() 处,选择 n+enter 可以执行当前的 statement。在第一次按下了 n+enter 之后可以直接按 enter 表示重复执行上一条 debug 命令。


清单 2. 利用 pdb 调试
python  pdbtest.py
> /root/pdbtest.py(7)<module>()
-> b = "bbbaa"
(Pdb) list
  2  
  3  
  4     import pdb 
  5     a = "aapdb"
  6     pdb.set_trace() 
  7  -> b = "bbbaa"
  8     c = "cccaaa"
  9     final = a + b + c 
 10     print final
[EOF]
(Pdb) n
> /root/pdbtest.py(8)<module>()
-> c = "cccaaa"
(Pdb) n
> /root/pdbtest.py(9)<module>()
-> final = a + b + c
(Pdb) n 
> /root/pdbtest.py(10)<module>()
-> print final
(Pdb) n
aapdbbbbaacccaaa
--Return--
> /root/pdbtest.py(10)<module>()->None
-> print final
(Pdb)



退出 debug:使用 quit 或者 q 可以退出当前的 debug,但是 quit 会以一种非常粗鲁的方式退出程序,其结果是直接 crash。










race() # 开启pdb提示

或者

try:
(一段抛出异常的代码)
except:
    import pdb
    pdb.pm() # 或者 pdb.post_mortem()


或者(输入 c 开始执行脚本)

python -mpdb script.py


在输入-计算-输出循环(注:REPL,READ-EVAL-PRINT-LOOP的缩写)环境下,可以有如下操作:

  • c or continue

  • q or quit

  • l or list, 显示当前步帧的源码

  • w or where,回溯调用过程

  • d or down, 后退一步帧(注:相当于回滚)

  • u or up, 前进一步帧

  • (回车), 重复上一条指令

其余的几乎全部指令(还有很少的其他一些命令除外),在当前步帧上当作python代码进行解析。

如果你觉得挑战性还不够的话,可以试下smiley,-它可以给你展示那些变量而且你能使用它来远程追踪程序。






iPDB是一个极好的工具,我已经用它查出了很多匪夷所思的bug。

pip install ipdb 安装该工具,然后在你的代码中import ipdb; ipdb.set_trace(),然后你会在你的程序运行时,获得一个很好的交互式提示。它每次执行程序的一行并且检查变量。


更好的调试器

pdb的直接替代者:
ipdb(easy_install ipdb) – 类似ipython(有自动完成,显示颜色等)
pudb(easy_install pudb) – 基于curses(类似图形界面接口),特别适合浏览源代码

 




阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯