【简介调试工具】
pdb借助特定指令可充当断点功能: pdb, pdb,(), 在程序里把该指令安放至需要暂停的位置
ipdb相比之下,我们更喜爱,拥有悦目的色彩,和自动补全功能,还能与bash无缝结合;
与内置pdb相比,ipdb的长处体现在恰当的调用上,这确实是其核心特点,根本原因就在于此
.()
pudb是一种全屏控制台式调试工具,它提供了可视化功能,在某种程度上类似于c语言中的Turbo C版本

要为pudb提供支持,必须在代码里加上 pudb, then use pudb, or else pudb
rpdb提供的两种方法,在具备终端显示功能时才能正常使用,部分场景下需在无交互的后台模式下运行,这种情况下无法进行输出交互,例如在开发环节,程序由uwsgi负责管理运作,其标准输出已被重新定向,因此通常只能借助日志文件来获取信息,这种情形下就必须借助远程调试功能。rpdb会启动一个通道,用于远程进行排错,其预设端口为4444,若指定为其他端口,如12345,则当程序运行停滞时,会侦听这个端口,此时可通过远程方式接入,实施调试操作,使用nc工具连接到127.0.0.1的12345端口即可
这是远程的pdb版本,ripdb把rpdb和ipdb的作用融合在了一起,它既支持远程调试,也带有美观的代码着色: .(端口是12345)若要获得自动补全效果,得对终端做些调整:首先是=`stty -g`,然后是stty - -opost -echo -echoe -echok - -,再执行nc 127.0.0.1 12345,最后用stty $来恢复
【详解pdb/ipdb】
试验程序:传两个参数,进行加法和减法
启动PDB进行调试,本质上就是运用一种交互式的代码调试工具;对程序进行改动:
import pdb # 添加模块
import sys
def add(num1=0, num2=0):
返回两个数的和,第一个数转为整数,第二个数也转为整数
def sub(num1=0, num2=0):
转换成数字形式后,第一个数减去第二个数,然后返回结果
def main():
print sys.argv
pdb.set_trace() # <-- Break point added here,设置的断点
addition = add(sys.argv[1], sys.argv[2])
print addition
subtraction = sub(sys.argv[1], sys.argv[2])
print subtraction
if __name__ == '__main__':
main()
程序运行时启动调试工具 运行: 3_pdb.py 1 3 //程序在首个暂停点处停滞,例如
现在能够观察到程序在print sys.argv这里停下了运行
同时揭示后续要进行的操作是 = 向参数列表中追加自身参数列表
输入“n”并按下回车键,会触发 = add(sys.argv, sys.argv) 的调用,随后会显示后续步骤的指引;然而存在一个障碍,pdb调试器无法自动进入add函数内部,此时可以使用s选项来克服这一限制

我们想查看某个变量的输出值,在操作进行时,若要观察,当c能直接转向下个暂停点,使用“p”可输出某个变量的值,不过,必须先让这个变量运行过才行,例如。
“s”能够进入某个函数体中,在函数体内部,可以利用n/p/b/c等“r”返回到之前进入函数的那个返回点
在程序中放置一个暂停点,但是当运行大量指令时,我们忽略了在代码里设定暂停标记
可以直接使用字母“b”来设定下一个暂停点的行号:b 行数7、列表 -> l 有时候在调试过程中,不清楚当前执行到了哪一行,也不明白后续的代码内容,为了避免退出调试去记忆某行代码,可以执行小写字母“L”来查看后续的程序流程

调试时能够动态分配变量辅助诊断过程,(Pdb) !n设为5,(Pdb) 显示n的值是5
调试期间,若需终止操作,可输入“q”命令或“exit”指令,按下回车键即可完成退出
而ipdb用法和pdb类似,只是更友好,更直观,如下:

扫一扫在手机端查看
- 上一篇:mysql set varchar VARCHAR长度选择_MySQL 中 Varchar(50) 和 varchar(500) 区别 90%的开发者踩过这个坑!
- 下一篇:mysql set varchar GaussDBforMySQLCOUNT查询并行优化策略_深度解读GaussDB(for MySQL)与MySQL的COUNT查询并行优化策略
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1