调试程序

回顾上次内容

  • py 的程序是依照程序执行的

    • 是一行行挨排解释执行的
    • 程序并不是数量越多越好
    • kpi也在一直演变

  • 写的代码越多

    • 呈现的bug就越多
  • 那什么是bug呢?

    • 如何找bug呢?

尝试调试

  • 想要调试程序找bug
  • 首先得有一个程序
print("1982------Guido in cwi")print("1995------Guido in cnri")print("2000------Guido in beopen")print("2005------Guido in google")print("2012------Guido in dropbox")print("2020------Guido in microsoft")
  • 首先要有这个guido.py
  • 而后放到网上零碎的剪贴板上

尝试调试

  • 粘贴到vim中

  • 原来是一把执行
  • 当初能够一步一步调试运行
pdb3 guido.py
  • 应用pdb来进行调试

    • pdb的意思是python's debugger
  • 为什么要逐渐运行呢?

逐渐运行

  • 因为程序不晓得哪里出的问题

    • 所以一步步来执行

  • 一步步调试运行的目标是去除bug

    • 也就是debug
  • 可是为什么把程序谬误叫做 bug 呢?

help

  • 不晓得怎么办的时候

    • 就要求助(help)

  • 他给了我很多的命令
  • 还说能够help 一下具体 topic
  • 查看你哪个topic呢?

具体帮忙

  • 查看帮忙的帮忙

  • 没有参数的话

    • 显示所有命令
  • 有一个参数

    • 显示这个参数的帮忙
  • h(elp) 的缩写是 h

    • elp能够省略

  • 这并不难 h h
  • 再看看其余单词

list

  • l(ist)

    • 能够列出上下文11行的程序
    • 缩写是l

  • 以后行后面有个箭头 ->

应用命令

  • 的确能够看到上下文
  • ->代表着以后运行到了哪里
  • 怎么往下走呢?

next

  • n(ext)

    • 能够往前走一句
    • 缩写是n

  • 试一下

  • 把1982年输入了
  • 而后以后行来到了1995年
  • 如何判断1995年在整个程序中的地位呢?

执行

  • l(ist)

    • 能够列出以后行的上下文

  • 在第2行

    • next就会到第3行
  • 当然也能够一路next上来

一路next

  • 咱们一路next

实现调试

  • 一路 next 上来
  • python 解释器
  • 就是这么一步步地解释执行的

  • 的确是程序执行的
  • 一行行挨排儿执行的
  • 咱们就一步步地把bug找进去
  • 就像找凶手一样!

最实在的解谜游戏

  • debug是我见过最实在的解谜游戏了
  • 比什么剧本杀好玩多了
  • 一步步地剖析
  • 找不到罪魁祸首的时候

  • 须要沉着地剖析
  • 找到罪魁祸首的时候
  • 那种高兴太实在了!!!!
  • 终于来到最初一行
  • 如果到这里再next
  • 会产生什么呢?

最初一步

  • 执行完最初一句之后

    • 就会返回(return)到python
    • 而后返回(return)到shell

  • 如果这个时候曾经到了程序的止境
  • 再next会产生什么呢?

绕圈

  • 到头了就又重来

    • 就会从新执行这个文件
    • 就圜道了

  • 可是这个和虫子(bug)有什么关系呢?

第一个谬误 bug

  • 历史上第一个程序谬误是

    • 这只虫子bug
    • 飞进继电器(relay)计算机(computer)外面来
    • 导致过后的继电器短路
  • 所以起初

    • 管谬误叫做bug
    • 管调试程序谬误叫做 debug

总结

  • py 文件的程序是依照程序

    • 一行行挨排解释执行的
    • 咱们能够 pdb3 hello.py 来对程序调试
  • 程序执行

    • 程序在文本中从上到下是一行行写的
    • 解释器是从上到下是一行行解释的
    • 调试也是从头到尾一行行执行的

  • 然而这一行行的是在有点慢啊
  • 毕竟咱们都是经验过万行代码的人了
  • 那得按10000次的n能力执行完啊?
  • 有快点的办法吗?
  • 咱们下次再说!
  • 蓝桥->https://www.lanqiao.cn/teache...
  • github->https://github.com/overmind19...
  • gitee->https://gitee.com/overmind198...
  • 视频->https://www.bilibili.com/vide... 作者:oeasy