用pdb走读代码如何?

2020年10月1日 / 3次阅读 / 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

相关文章

    留言区

    电子邮件地址不会被公开。 必填项已用*标注


    前一篇:
    后一篇:

    More


    ©Copyright 麦新杰 Since 2019 Python笔记

    go to top