ipdb python调试工具

ipdb python调试工具

在三维点云中,各种矩阵的运算及输出需要多次调试才能够理解和更改,原来一直使用print大法,这样会导致手忙脚乱,而且很烦。现在有一个ipdb工具可以进行方便的调试,同时也不会显得特别蠢。。。。。

python 提供了一个默认的 debugger:pdb,而 ipdb 则是 pdb 的增强版,提供了补全、语法高亮等功能,类似于 ipython 与 python 默认的交互终端的关系,通过 pip install ipdb 即可安装 ipdb。

github地址 :https://github.com/gotcha/ipdb

pdb的官方网址 https://docs.python.org/3.5/library/pdb.html

参考网址 https://wulc.me/2018/12/21/ipdb%20%E4%BD%BF%E7%94%A8%E5%B0%8F%E8%AE%B0/

使用方式

ipdb 的使用方法一般有两种:集成到源代码或通过命令交互

集成到源代码方式

集成到源代码可以直接在代码指定位置插入断点。

官方实例如下所示:

import ipdb
ipdb.set_trace()
ipdb.set_trace(context=5)  # will show five lines of code
                           # instead of the default three lines
                           # or you can set it via IPDB_CONTEXT_SIZE env variable
                           # or setup.cfg file
ipdb.pm()
ipdb.run('x[0] = 3')
result = ipdb.runcall(function, arg0, arg1, kwarg='foo')
result = ipdb.runeval('f(1,2) - 3')

一个简单的例子如下所示

import ipdb
num=12
ipdb.set_trace()

其中,在执行完num=12 命令后,会暂停进入ipython环境调试

常用命令

  • ENTER(重复上次命令)
  • c(继续)
  • l(查找当前位于哪里)
  • s(进入子程序)
  • r(运行直到子程序结束)
  • !<python 命令>
  • h(帮助)
  • a(rgs) 打印当前函数的参数
  • j(ump) 让程序跳转到指定的行数
  • l(ist) 可以列出当前将要运行的代码块
  • n(ext) 让程序运行下一行,如果当前语句有一个函数调用,用 n 是不会进入被调用的函数体中的
  • p(rint) 最有用的命令之一,打印某个变量
  • q(uit) 退出调试
  • r(eturn) 继续执行,直到函数体返回
  • s(tep) 跟 n 相似,但是如果当前有一个函数调用,那么 s 会进入被调用的函数体中

启动命令式

上面的方式虽然简单,但是存在着两个较为比较明显的问题:

  1. 插入的断点代码会污染原来的代码空间

  2. 每次插入断点都需要修改源码

因此,相比于上面的方式,交互式的命令式调试方法更加方便。启动命令式调试环境的方法也很简单:

python -m ipdb code.py

逐行执行

有两条命令可以进行逐行执行: s(step) 或 n(next), 两个命令的主要区别是:假如当前行调用了某个函数,s 会进入这个函数,n 则不会。因此,如果需要了解函数内部执行的细节,需要 s 命令进入函数内部进行 debug。

进入了函数之后,通过命令 a(argument) 可列出当前的函数的参数,通过 r(return)则可以直接执行至 return 语句。

忽略某段代码

使用 j line_number 可以忽略某段代码,下一步直接从 line_number 开始执行。

查看源码

通过命令 lll 可查看源码, ll 是查看整个源码文件, l 可指定需要查看的行数,默认是当前往后 11 行,也可指定具体的范围,如 l 2,5 是查看第 2-5 行的源码。

重启或退出 debugger

上面已经提到了重启 debugger 可通过 restartrun 命令,需要注意的是,**重启 debugger 后断点、debugger 的设置等是会保留的。**如果要一个全新的 debugger,可通过命令 qquitexit 退出 debugger 后进入。

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值