[oeasy]python0008-調(diào)試程序_debug

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

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

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

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

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

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

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

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

當(dāng)前行前面有個(gè)箭頭 ->
使用命令

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

試一下

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

在第2行
next就會(huì)到第3行
當(dāng)然也可以一路next下去
一路next

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

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

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

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

可是這個(gè)和蟲子(bug)有什么關(guān)系呢?
第一個(gè)錯(cuò)誤 bug

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

但是這一行行的是在有點(diǎn)慢啊
畢竟我們都是經(jīng)歷過(guò)萬(wàn)行代碼的人了
那得按10000次的n才能執(zhí)行完???
有快點(diǎn)的方法嗎???
我們下次再說(shuō)!??
藍(lán)橋->https://www.lanqiao.cn/teacher/workbench/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython