Pycharm?debug程序,跳轉(zhuǎn)至指定循環(huán)條件/循環(huán)次數(shù)問(wèn)題
Pycharm debug程序,跳轉(zhuǎn)至指定循環(huán)條件/循環(huán)次數(shù)
在斷點(diǎn)出右鍵,然后設(shè)置條件

示例
for i in range(1,100):
a = i + 1
b = i + 2
print(a, b, i)注意:
1、你應(yīng)該debug斷點(diǎn)在循環(huán)后的位置而不是循環(huán)上的位置,然后你就可以設(shè)置你的條件進(jìn)入到指定的循環(huán)上了

2、設(shè)置條件,要使用等于符號(hào)“==”而不是賦值符號(hào)“=”
3、在設(shè)置斷點(diǎn)條件的位置,條件應(yīng)該是出現(xiàn)過(guò)的變量,
例如下面設(shè)置“a==15”是正確的、“b==15”就是錯(cuò)誤的,因?yàn)閎在這一行運(yùn)行之前還沒(méi)有出現(xiàn)

在運(yùn)行過(guò)程中設(shè)置條件,從而直接運(yùn)行到這次的條件循環(huán),而不需要重新debug
例如此時(shí)你設(shè)置了斷點(diǎn),但是沒(méi)有設(shè)置斷點(diǎn)條件,此時(shí)i=1是第一次循環(huán)

此時(shí)你想調(diào)到第15次循環(huán),也就是條件“I==15”,那么你不需要重新debug,而只需要在本次運(yùn)行中設(shè)置循環(huán)條件,然后直接“Step out”就可以了【Shift + F8】

成功進(jìn)入第15次循環(huán):

Pycharm中Debug的高級(jí)技巧
1.斷點(diǎn)條件調(diào)試
有這樣一個(gè)場(chǎng)景,代碼 DeBug 的時(shí)候,我想知道下面代碼 index 為 10 時(shí), date_1的值是什么,正常來(lái)說(shuō)要 代碼 DeBug 循環(huán) 10 次,很不方便。

在 IDE 中有個(gè)條件斷點(diǎn),只需設(shè)置好變量條件,只有當(dāng)某個(gè)變量等于你設(shè)置的條件的值時(shí),斷點(diǎn)就會(huì)自動(dòng)停下。
首先右擊第 24 行的斷點(diǎn),給 Conditon 設(shè)置變量條件 index == 10,并點(diǎn)擊 Done 保存設(shè)置。

當(dāng) index 的值為 10 時(shí),DeBug 就會(huì)自動(dòng)停下,效果如下圖

2.計(jì)算表達(dá)式
當(dāng)我們 Debug 某個(gè)方法時(shí),有時(shí)候會(huì)忘了傳入某個(gè)參數(shù)或者傳錯(cuò)了,這個(gè)時(shí)候又不想重新Debug,
就可以通過(guò)計(jì)算表達(dá)式來(lái)設(shè)置某個(gè)變量的值,如下圖,發(fā)現(xiàn) day_int = 367 不是期望的值,可以鼠標(biāo)右擊下面藍(lán)色的 day_int , 選擇 Set Value, 對(duì) day_int 臨時(shí)修改值

下面的代碼程序會(huì)根據(jù)重新賦的值向下運(yùn)行,可以看到變量 num_30 的值是 200 整除 30 的結(jié)果。

3.調(diào)試神器 pdb
準(zhǔn)備文件
在調(diào)試之前先將這兩個(gè)文件準(zhǔn)備好(做為演示用),并放在同級(jí)目錄中。
utils.py
def sum(mylist): result = 0 for item in mylist: result += item return result
- pdb_demo.py
import utils
def myfunc(mylist):
result = utils.sum(mylist)
print(result)
if __name__ == '__main__':
print("----start----")
myfunc([1,2,3,4])
print("----end-----")輸出:
----start----
10
----end----
進(jìn)入調(diào)試模式 (主要有兩種方法)
做為腳本調(diào)用,方法很簡(jiǎn)單,就像正常執(zhí)行python腳本一樣,只是多加了-m pdb
ptyhon -m pdb pdb_demo.py
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python中isinstance()函數(shù)原理解釋及詳細(xì)用法示例
isinstance()是Python內(nèi)置的一個(gè)非常有用的函數(shù),用于檢查一個(gè)對(duì)象是否屬于指定的類型或類型元組中的某一個(gè)類型,它是Python類型檢查的核心工具之一,比傳統(tǒng)的type()函數(shù)更加靈活和安全,本文給大家介紹Python中isinstance()函數(shù)原理解釋及詳細(xì)用法,感興趣的朋友一起看看吧2025-09-09
如何利用Python快速統(tǒng)計(jì)文本的行數(shù)
這篇文章主要介紹了如何利用Python快速統(tǒng)計(jì)文本的行數(shù),要快速統(tǒng)計(jì)一個(gè)文本文件中的行數(shù),其實(shí)就是要統(tǒng)計(jì)這個(gè)文本文件中換行符的個(gè)數(shù),下面我們就一起進(jìn)入文章看看具體的操作過(guò)程吧2021-12-12
Python多線程編程(八):使用Event實(shí)現(xiàn)線程間通信
這篇文章主要介紹了Python多線程編程(八):使用Event實(shí)現(xiàn)線程間通信,,需要的朋友可以參考下2015-04-04
Python實(shí)現(xiàn)打印九九乘法表的不同方法總結(jié)
這篇文章主要為大家介紹了Python實(shí)現(xiàn)打印九九乘法表的幾種不同方法,文中的示例代碼講解詳細(xì),簡(jiǎn)潔易懂,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-11-11
使用Python求解帶約束的最優(yōu)化問(wèn)題詳解
今天小編就為大家分享一篇使用Python求解帶約束的最優(yōu)化問(wèn)題詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02

