• pdb常用调试命令


    常用的调试命令

    • h(elp),会打印当前版本Pdb可用的命令,如果要查询某个命令,可以输入 h [command],例如:“h l” — 查看list命令
    • l(ist),可以列出当前将要运行的代码块

    (Pdb) l
    497 pdb.set_trace()
    498 base_data = {}
    499 new_data = {}
    500 try:
    501 execfile(base_file_name,{},base_data)
    502 -> execfile(new_file_name,{},new_data)
    503 except:
    504 logger.writeLog(“error! load result log error!”)
    505 print “load cmp logs error!”
    506 raise Exception, “load cmp logs error!”
    507

    >断点设置
       (Pdb)b  10 #断点设置在本py的第10行
       或(Pdb)b  ots.py:20 #断点设置到 ots.py第20行
       删除断点(Pdb)b #查看断点编号
                (Pdb)cl 2 #删除第2个断点
         
    >运行
        (Pdb)n #单步运行
        (Pdb)s #细点运行 也就是会下到,方法
        (Pdb)c #跳到下个断点


    >查看
        (Pdb)p param #查看当前 变量值
        (Pdb)l #查看运行到某处代码
        (Pdb)a #查看全部栈内变量

    • b(reak), 设置断点,例如 “b 77″,就是在当前脚本的77行打上断点,还能输入函数名作为参数,断点就打到具体的函数入口,如果只敲b,会显示现有的全部断点

    (Pdb) b 504
    Breakpoint 4 at /home/jchen/regression/regressionLogCMP.py:504

    • condition bpnumber [condition],设置条件断点,下面语句就是对第4个断点加上条件“a==3”

    (Pdb) condition 4 a==3
    (Pdb) b
    Num Type Disp Enb Where
    4 breakpoint keep yes at /home/jchen/regression/regressionLogCMP.py:504
    stop only if a==3

    • cl(ear),如果后面带有参数,就是清除指定的断点(我在Python2.4上从来没成功过!!!);如果不带参数就是清除所有的断点

    (Pdb) cl
    Clear all breaks? y

    • disable/enable,禁用/激活断点

    (Pdb) disable 3
    (Pdb) b
    Num Type Disp Enb Where
    3 breakpoint keep no at /home/jchen/regression/regressionLogCMP.py:505

    • n(ext),让程序运行下一行,如果当前语句有一个函数调用,用n是不会进入被调用的函数体中的
    • s(tep),跟n相似,但是如果当前有一个函数调用,那么s会进入被调用的函数体中
    • c(ont(inue)),让程序正常运行,直到遇到断点
    • j(ump),让程序跳转到指定的行数

    (Pdb) j 497
    > /home/jchen/regression/regressionLogCMP.py(497)compareLog()
    -> pdb.set_trace()

    • a(rgs),打印当前函数的参数

    (Pdb) a
    _logger =
    _base = ./base/MRM-8137.log
    _new = ./new/MRM-8137.log
    _caseid = 5550001
    _toStepNum = 10
    _cmpMap = {‘_bcmpbinarylog’: ‘True’, ‘_bcmpLog’: ‘True’, ‘_bcmpresp’: ‘True’}

    • p,最有用的命令之一,打印某个变量

    (Pdb) p _new
    u’./new/MRM-8137.log’

    • !,感叹号后面跟着语句,可以直接改变某个变量
    • q(uit),退出调试
     
     
  • 相关阅读:
    函数式编程(二):curry
    函数式编程(一):纯函数
    用 gulp 建一个服务器
    深度学习-Tensorflow2.2-预训练网络{7}-迁移学习基础针对小数据集-19
    深度学习-Tensorflow2.2-自定义训练综合实例与图片增强{6}-猫狗数据集实例-18
    深度学习-Tensorflow2.2-Tensorboard可视化{5}-可视化基础-17
    深度学习-Tensorflow2.2-Eager模式与自定义训练{4}-微分运算训练练习-16
    深度学习-Tensorflow2.2-卷积神经网络{3}-电影评论数据分类/猫狗数据集实例-15
    深度学习-Tensorflow2.2-批标准化简介-14
    深度学习-Tensorflow2.2-卷积神经网络{3}-卫星图像识别卷积综合实例(二分类)-13
  • 原文地址:https://www.cnblogs.com/huazi/p/2796681.html
Copyright © 2020-2023  润新知