[oeasy]python0009 - 設置斷點_break_point
調(diào)試程序 ??
回憶上次內(nèi)容
py
的程序是按照順序執(zhí)行的是一行行挨排解釋執(zhí)行的
程序并不是數(shù)量越多越好
kpi也在不斷演化

寫的代碼越多
出現(xiàn)的bug就越多
那什么是bug呢?
如何找bug呢?
嘗試調(diào)試
想要調(diào)試程序找bug
首先得有一個程序
首先要有這個guido.py
然后放到網(wǎng)上系統(tǒng)的剪貼板上

嘗試調(diào)試
粘貼到vim中

原來是一把執(zhí)行
現(xiàn)在可以一步一步調(diào)試運行
pdb3 guido.py
使用
pdb
來進行調(diào)試pdb
的意思是p
ython'sd
eb
ugger??為什么要逐步運行呢?
逐步運行
由于程序不知道哪里出的問題
所以一步步來執(zhí)行

一步步調(diào)試運行的目的是去除
bug
也就是
debug
可是為什么把程序錯誤叫做
bug
?? 呢?
help
不知道怎么辦的時候
就要求助(help)

他給了我很多的命令
還說可以help 一下具體 topic
查看你哪個topic呢?
具體幫助
查看幫助的幫助

沒有參數(shù)的話
顯示所有命令
有一個參數(shù)
顯示這個參數(shù)的幫助
h(elp) 的縮寫是 h
elp可以省略

這并不難 h h
再看看其他單詞
list
l(ist)
可以列出上下文11行的程序
縮寫是l

當前行前面有個箭頭 ->
使用命令

確實可以看到上下文
->代表著當前運行到了哪里
怎么往下走呢?
next
n(ext)
可以往前走一句
縮寫是n

試一下

把1982年輸出了
然后當前行來到了1995年
如何判斷1995年在整個程序中的位置呢?
執(zhí)行
l(ist)
可以列出當前行的上下文

在第2行
next就會到第3行
當然也可以一路next下去
一路next

我們一路next
完成調(diào)試
一路
next
下去python 解釋器
就是這么一步步地解釋執(zhí)行的

確實是順序執(zhí)行的
一行行挨排兒執(zhí)行的
我們就一步步地把bug找出來
就像找兇手一樣!
最真實的解謎游戲
debug是我見過最真實的解謎游戲了
比什么劇本殺好玩多了
一步步地分析
找不到罪魁禍首的時候

需要冷靜地分析
找到罪魁禍首的時候
那種快樂太真實了?。。?!
終于來到最后一行
如果到這里再next
會發(fā)生什么呢?
最后一步
執(zhí)行完最后一句之后
就會返回(return)到python
然后返回(return)到shell

如果這個時候已經(jīng)到了程序的盡頭
再next會發(fā)生什么呢?
繞圈
到頭了就又重來
就會重新執(zhí)行這個文件
就圜道了

可是這個和蟲子(bug)有什么關系呢?
第一個錯誤 bug

歷史上第一個程序錯誤是
這只蟲子
bug
??飛進繼電器(relay)計算機(computer)里面來
導致當時的繼電器短路
所以后來
管錯誤叫做bug
管調(diào)試程序錯誤叫做
debug
總結
py
文件的程序是按照順序一行行挨排解釋執(zhí)行的
我們可以
pdb3 hello.py
來對程序調(diào)試順序執(zhí)行
程序在文本中從上到下是一行行寫的
解釋器是從上到下是一行行解釋的
調(diào)試也是從頭到尾一行行執(zhí)行的

但是這一行行的是在有點慢啊
畢竟我們都是經(jīng)歷過萬行代碼的人了
那得按10000次的n才能執(zhí)行完???
有快點的方法嗎???
我們下次再說!??
藍橋->https://www.lanqiao.cn/teacher/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython
視頻->https://www.bilibili.com/video/BV1CU4y1Z7gQ 作者:oeasy