pycharm中的調(diào)試功能使用及說明
一、調(diào)試前的準(zhǔn)備工作??
1. 準(zhǔn)備一段測試代碼
先寫一個(gè)簡單的Python腳本(比如計(jì)算階乘),故意留點(diǎn)問題:
def factorial(n):
result = 1
for i in range(n):
result *= i
return result
print(factorial(5)) # 預(yù)期輸出120,但實(shí)際輸出0?2. 為什么需要調(diào)試?
- 當(dāng)代碼運(yùn)行結(jié)果不符合預(yù)期時(shí),調(diào)試能幫你逐行跟蹤代碼執(zhí)行過程。
- 可以查看變量值的變化,找出邏輯錯(cuò)誤。
??二、調(diào)試核心操作(帶截圖步驟)??
??1. 設(shè)置斷點(diǎn)(Breakpoint)??
- ??作用??:讓程序運(yùn)行到此處時(shí)暫停,方便觀察。
- ??操作??:在代碼行號(hào)左側(cè)單擊,出現(xiàn)紅點(diǎn)。
- (示例:在第3行
result = 1和第5行result *= i設(shè)置斷點(diǎn))
??2. 啟動(dòng)調(diào)試模式??
- ??方法1??:點(diǎn)擊右上角的綠色甲蟲圖標(biāo) ??。
- ??方法2??:右鍵代碼 → 選擇
Debug '文件名'。
??3. 調(diào)試界面布局??
啟動(dòng)調(diào)試后,PyCharm 會(huì)自動(dòng)進(jìn)入調(diào)試視圖,主要分為:
- ??① 調(diào)試工具欄??:控制代碼執(zhí)行(步進(jìn)、恢復(fù)等)。
- ??② 變量窗口(Variables)??:顯示當(dāng)前作用域內(nèi)的變量值。
- ??③ 控制臺(tái)(Console)??:顯示程序輸出和輸入。
??三、關(guān)鍵調(diào)試按鈕詳解??
| 按鈕圖標(biāo) | 名稱 | 快捷鍵 | 作用說明 |
|---|---|---|---|
| ?? | Resume | F9 | 繼續(xù)執(zhí)行程序,直到下一個(gè)斷點(diǎn)或結(jié)束。 |
| ?? | Step Over | F8 | 執(zhí)行當(dāng)前行代碼,??不進(jìn)入??函數(shù)或循環(huán)內(nèi)部。 |
| ?? | Step Into | F7 | 執(zhí)行當(dāng)前行代碼,??進(jìn)入??函數(shù)內(nèi)部(比如調(diào)試自定義函數(shù)時(shí)用)。 |
| ?? | Step Out | Shift+F8 | 從當(dāng)前函數(shù)內(nèi)部跳出,回到調(diào)用它的位置。 |
| ?? | Stop | Ctrl+F2 | 終止調(diào)試進(jìn)程。 |
??四、實(shí)際調(diào)試流程(以示例代碼為例)??
??1. 第一次暫停(斷點(diǎn):第3行)??
- ??觀察變量窗口??:此時(shí)
n=5,result=1(正確)。 - ??點(diǎn)擊
Step Over(F8)??:執(zhí)行result = 1。
??2. 進(jìn)入循環(huán)(斷點(diǎn):第5行)??
??點(diǎn)擊 Step Over(F8)多次??,觀察每次循環(huán)時(shí) i 和 result 的變化:
- ??問題暴露??:第一次循環(huán)時(shí)
i=0,導(dǎo)致result *= 0,結(jié)果變?yōu)?! - ??錯(cuò)誤原因??:
range(n)生成的是[0,1,2,3,4],應(yīng)從1開始循環(huán)。
??3. 修復(fù)代碼??
修改循環(huán)范圍:for i in range(1, n+1):
??五、調(diào)試進(jìn)階技巧??
1. ??條件斷點(diǎn)(Conditional Breakpoint)??
- ??作用??:當(dāng)滿足特定條件時(shí)暫停。
- ??設(shè)置??:右鍵斷點(diǎn) → 輸入條件(如
i == 3)。
2. ??監(jiān)視表達(dá)式(Watches)??
- ??作用??:實(shí)時(shí)監(jiān)控某個(gè)變量或表達(dá)式的值。
- ??操作??:在
Watches窗口點(diǎn)擊+→ 輸入表達(dá)式(如i * 2)。
3. ??重新運(yùn)行調(diào)試??
- 修改代碼后無需關(guān)閉調(diào)試,直接點(diǎn)擊調(diào)試按鈕重新啟動(dòng)。
??六、常見問題排查??
1. ??調(diào)試時(shí)程序沒有暫停???
- 檢查是否設(shè)置了斷點(diǎn)。
- 確保代碼確實(shí)執(zhí)行到了斷點(diǎn)位置。
2. ??變量窗口沒有顯示值???
- 確認(rèn)程序已暫停在斷點(diǎn)處。
- 檢查變量是否在當(dāng)前作用域內(nèi)(比如循環(huán)內(nèi)部變量需在循環(huán)中查看)。
3. ??如何調(diào)試報(bào)錯(cuò)行???
- 當(dāng)程序拋出異常時(shí),PyCharm 會(huì)自動(dòng)跳轉(zhuǎn)到錯(cuò)誤行,并顯示堆棧信息。
總結(jié):調(diào)試的核心思路??
- ??定位問題區(qū)域??:通過錯(cuò)誤提示或日志縮小范圍。
- ??設(shè)置斷點(diǎn)??:在可疑代碼前后暫停。
- ??逐行跟蹤??:觀察變量是否符合預(yù)期。
- ??驗(yàn)證修復(fù)??:修改后重復(fù)調(diào)試直到正確。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python輸出由1,2,3,4組成的互不相同且無重復(fù)的三位數(shù)
這篇文章主要介紹了Python輸出由1,2,3,4組成的互不相同且無重復(fù)的三位數(shù),分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02
python3安裝pip3(install pip3 for python 3.x)
這篇文章主要為大家詳細(xì)介紹了install pip3 for python 3.x,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
Python標(biāo)準(zhǔn)庫之Sys模塊使用詳解
這篇文章主要介紹了Python標(biāo)準(zhǔn)庫之Sys模塊使用詳解,本文講解了使用sys模塊獲得腳本的參數(shù)、處理模塊、使用sys模塊操作模塊搜索路徑、使用sys模塊查找內(nèi)建模塊、使用sys模塊查找已導(dǎo)入的模塊等使用案例,需要的朋友可以參考下2015-05-05
Python 查找list中的某個(gè)元素的所有的下標(biāo)方法
今天小編就為大家分享一篇Python 查找list中的某個(gè)元素的所有的下標(biāo)方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
解決python給列表里添加字典時(shí)被最后一個(gè)覆蓋的問題
今天小編就為大家分享一篇解決python給列表里添加字典時(shí)被最后一個(gè)覆蓋的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
PyJWT實(shí)現(xiàn)Token驗(yàn)證
Python 的?PyJWT?是一個(gè)流行的庫,用于處理 JWT,本文主要介紹了PyJWT實(shí)現(xiàn)Token驗(yàn)證,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-04-04
Python調(diào)用REST API接口的幾種方式匯總
這篇文章主要介紹了Python調(diào)用REST API接口的幾種方式匯總,幫助大家更好的利用python進(jìn)行自動(dòng)化運(yùn)維,感興趣的朋友可以了解下2020-10-10

