python学习笔记-基础技能-调试

来源:互联网 发布:九阴真经帅哥捏脸数据 编辑:程序博客网 时间:2024/05/22 07:05

1:调试

利用pdb模块进行调试,这种方式是在命令行下面进行调试的。

第一种方法是从命令行进入,进行.py文件的运行,在运行时候添加以下参数:python -m pdb 20140805.py

截图如下所示:

第二种是比较常用的,就是在程序中间插入一段程序,

import pdbpdb.set_trace()
相对于在一般IDE里面打上断点然后启动debug,这种方式略显繁琐


然后正常运行脚本,到了pdb.set_trace()那就会定下来,就可以看到调试的提示符(Pdb)了

注意此处,应该直接按F5运行,而不能是按debug(若是用按debug,则直接从第一行开始进行调试)。运行之后,会停留在 pdb.set_trace() 处,选择 n+enter 可以执行当前的 statement。在第一次按下了 n+enter 之后可以直接按 enter 表示重复执行上一条 debug 命令(类似以matlab,按键盘中上下方向符可以进行上一条命令的再次操作),例如这里按n+enter之后,再按enter,则直接等价于再次按下一次n+enter,进行单步调试。

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

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

  • n(ext),让程序运行下一行,如果当前语句有一个函数调用,用n是不会进入被调用的函数体中的
  • s(tep),跟n相似,但是如果当前有一个函数调用,那么s会进入被调用的函数体中
  • c(ont(inue)),让程序正常运行,直到遇到断点
  • q(uit),退出调试(但是 quit 会以一种非常粗鲁的方式退出程序,其结果是直接 crash。)
  • cl(ear),如果后面带有参数,就是清除指定的断点(指的是第几个断点,比如cl 2,表示清除第二个断点);如果不带参数就是清除所有的断点
  • b 10 #断点设置在本py的第10行
    或b ots.py:20 #断点设置到 ots.py第20行
    b #查看断点编号

    2:在调试的时候动态改变值:在调试的时候可以动态改变变量的值,具体如b原来的值是2,如果想重新改变 b 的赋值,则应该使用 !b=3,即可将b修改为3。

    3:在函数内进行debug。先用s进行函数体内,如下图所示:


    进入了leastsq函数体内。函数里面的单步调试与上面的介绍类似。如果不想在函数里单步调试可以在断点处直接按 r 退出到调用的地方。


0 0