2020年10月1日 / 55次阅读 / Last Modified 2020年10月1日
一直不是很喜欢和习惯使用pdb调试代码,但是今天却发现用pdb走读代码还不错,一遍看代码,一遍执行,一遍查看变量的值。
可以在python shell中启动pdb:
>>> import pdb
>>> pdb.run('za.testList()')
> (1)()->None
(Pdb) s
--Call--
> d:\onlinepro\za.py(262)testList()
-> def testList(LL=[]): # can not be LL=[:]
(Pdb)
s,进入函数;
n,单步执行,不仅如此函数;
也可以在命令行用pdb启动一个.py程序:
$ python3 -m pdb xxxxx.py
h(elp),查看所有pdb命令的帮助,比如 help s, help n。
pdb常用命令
p
计算并打印变量的值,和 print 类似。也可以直接输入变量名回车也会打印变量的值。
n
下一行,逐行调试的时候可以使用。
c
继续运行直到下一个断点,也就是 continue 的缩写。
l
查看断点附近的代码,方便知道目前所处的位置。
b
后面加行号,就可以动态添加断点了。
s
进入函数内部。
r
执行代码直到从当前函数返回。
q
强制退出,这样的话程序会异常退出。
在代码中插入pdb.set_trace()
有的时候,这样方式会更方便,直接在你希望break的位置,插入pdb.set_trace(),执行代码,程序就会在这个为停止,等待你的下一步指示:
$ python3 fastai_01.py
> /mnt/d/test/fastai_01.py(16)()
-> learn = cnn_learner(dls, resnet34, metrics=error_rate)
(Pdb) ll
1 import pdb
2
3 from fastai.vision.all import *
4 path = untar_data(URLs.PETS)/'images'
5
6
7 def is_cat(x):
8 return x[0].isupper()
9
10
11 dls = ImageDataLoaders.from_name_func(
12 path, get_image_files(path), valid_pct=0.2, seed=42,
13 label_func=is_cat, item_tfms=Resize(224))
14
15 pdb.set_trace()
16 -> learn = cnn_learner(dls, resnet34, metrics=error_rate)
17 learn.fine_tune(1)
18
(Pdb)
高级的工具,还是多用用,提高效率!
-- EOF --
本文链接:https://www.pynote.net/archives/2522
前一篇:truncate函数
后一篇:进度条模块tqdm介绍
©Copyright 麦新杰 Since 2019 Python笔记