Python/pdb调试
问题
编程时查看变量的值是很有必要的,这可以帮助我们判断代码是否有Bug,也可以据此判断Bug出现在哪里。下面介绍如何在Python中使用pdb进行调试,并查看变量值。
以下方法通常也适用于其他编程语言,IDE以PyCharm为例。其中,推荐使用pdb进行调试,用法与gdb类似,可以打断点、逐行运行、打印变量;不推荐使用print函数调试,因为此方法需要编写多个print,且每次修改代码后都需要重新运行;若使用PyCharm编辑器,则可以通过编辑器的调试工具进行调试。
使用pdb调试(推荐)
使用pdb可在程序外调用pdb,方法如下:
python -m pdb script.py [args]
也可py代码内启动pdb,使用方法如下:
# 导入pdb库
import pdb
# 在指定位置打断点
pdb.set_trace()
随后运行py脚本即可在断点处停下来,便可像gdb一样进行调试,调试命令如下:
# 查看断点
b
# 添加断点
b [breakpoint]
# 删除断点
clear [point_num]
# 单步运行,遇到函数会进入函数体
s
# 运行下一行,遇到函数会执行完整个函数
n
# 继续运行,直至下一断点或程序结束
c
# 打印变量
p [var]
# 退出pdb
q
补充:在添加断点和打印变量时可以使用Tab自动补全。
使用print函数调试
在适当位置使用print
函数输出,这样在运行时便可查看指定的变量值。为避免混淆,可以为输出添加标识符,示例如下:
# 要查看maxVal的变量值
print("max value: ", maxVal) # 方式1
print("max value = ", maxVal) # 方式2
PyCharm调试
想要通过调试查看变量值,必须先插入断点,在代码行的标号处可添加断点,出现红色的断点即代表插入成功,如下图:
可以在欲查看变量值的语句前插入,之后点击调试按钮(Debug按钮)即可进行调试,如下图:
在Debug面板下,可以查看各变量值,若有多个断点,则可以运行至下一断点调试代码,如下图:
可以对某些变量右键,选择Add to Watches
,进行专门监控,如下图:
对于Array
类型的变量,可以右击选择View as array
,以表格的形式查看数据,如下图: