調試程序 🥊回憶上次內容
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'sdebugger🤖
為什麼要逐步運行呢?
逐步運行
由於程序不知道哪裡出的問題
所以一步步來執行
編輯
一步步調試運行的目的是去除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/courses/3584
github->GitHub - overmind1980/oeasy-python-tutorial: 良心的 Python 教程,面向零基礎初學者簡明易懂的 Python3 入門基礎課程。在linux+vim生產力環境下,從淺入深,從簡單程序學到網絡爬蟲。可以配合藍橋雲上實驗環境操作。
gitee->oeasy教您玩轉python教程: 面向零基礎初學者的簡明易懂的 Python3 入門課程,對沒有編程經驗的同學也非常友好。在vim下從淺入深,逐步學習。從基礎入門學習到爬蟲。
視頻->[oeasy]教您玩轉python零基礎學python入門教程(合集)_嗶哩嗶哩_bilibili 作者:oeasy