日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

 靜幻堂 2020-02-01
咪哥雜談 2019-12-02 12:42:12

前言

Debug調(diào)試,是一項(xiàng)學(xué)習(xí)編程人員的重要技能。只有當(dāng)你學(xué)會(huì) debug 了以后,才可以正確的知道程序的走向流程是如何的,今天就來(lái)給大家介紹一下 pycharm 中的 debug 功能!

debug的前世

在正式講解之前,先來(lái)了解下 debug 這個(gè)詞的由來(lái),就像我們初學(xué)Python 時(shí),先要了解下它歷史的由來(lái)。

1937年,美國(guó)青年霍華德·艾肯找到IBM公司為其投資200萬(wàn)美元研制計(jì)算機(jī),第一臺(tái)成品艾肯把它取名為:馬克1號(hào)(mark1),又叫“自動(dòng)序列受控計(jì)算機(jī)”,從這時(shí)起IBM公司由生產(chǎn)制表機(jī),肉鋪磅秤,咖啡研磨機(jī)等亂七八糟玩意兒行業(yè),正式跨進(jìn)“計(jì)算機(jī)”領(lǐng)地。

為馬克1號(hào)編制程序的是哈佛的一位女?dāng)?shù)學(xué)家葛麗斯·莫雷·霍波,有一天,她在調(diào)試程序時(shí)出現(xiàn)故障,拆開(kāi)繼電器后,發(fā)現(xiàn)有只飛蛾被夾扁在觸點(diǎn)中間,從而“卡”住了機(jī)器的運(yùn)行。于是,霍波詼諧的把程序故障統(tǒng)稱為“臭蟲(chóng)(BUG)”,把排除程序故障叫DEBUG,而這奇怪的“稱呼”,后來(lái)成為計(jì)算機(jī)領(lǐng)域的專業(yè)行話。從而debug意為排除程序故障的意思。

百度百科

看了上面的小故事,debug 一詞的由來(lái),是由 bug 詞得來(lái)的,bug 是臭蟲(chóng)的意思,debug 就是解決臭蟲(chóng)。

在如今的互聯(lián)網(wǎng)時(shí)代,多少你肯定聽(tīng)說(shuō)過(guò) bug 這個(gè)詞,比如什么什么軟件又出 bug 了!說(shuō)的就是軟件在使用的過(guò)程中,程序出現(xiàn)了一些錯(cuò)誤。故稱之為 bug。

**而 debug 則是通過(guò)工具來(lái)對(duì)代碼進(jìn)行調(diào)試,一步步找出程序中出現(xiàn) bug 的位置,也就是程序中具體錯(cuò)誤代碼的位置。**就像故事中所說(shuō),debug過(guò)程就是在解決蟲(chóng)子一樣。。

pycharm 中的 debug 模式

來(lái)步入今天的正題。

首先,還是用示例說(shuō)話,我們書(shū)寫(xiě)一段簡(jiǎn)短的代碼,來(lái)幫我們完成今天要講的內(nèi)容。

def sum_demo(x, y):
for _ in range(2):
x += 1
y += 1
result = x + y
return result

if __name__ == '__main__':
result = sum_demo(1, 1)
print(result)

肉眼識(shí)別下,猜猜結(jié)果是多少呢?初學(xué)者可能沒(méi)見(jiàn)過(guò) for 循環(huán)中的下劃線,在 Python 中是占位符的意思,因?yàn)閱渭兊难h(huán)兩次而已,并不用到它的循環(huán)結(jié)果。最終 result 會(huì)輸出 6 。

在 pycharm 中,如何開(kāi)啟 debug 調(diào)試,一共有三種進(jìn)入的方法,如下(下圖均可點(diǎn)開(kāi)放大觀看):

方法一:

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

方法二:

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

方法三:

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

還有一種方法,就是 pycharm 導(dǎo)航欄處,有個(gè)run,點(diǎn)開(kāi)以后即可看到 debug ,這里就不截圖演示了。

單純的進(jìn)入 debug 模式,你會(huì)發(fā)現(xiàn),與正常的 run 去運(yùn)行程序沒(méi)有差異。差異就是 pycharm 的控制臺(tái)部分,從 run 跑到了 debug 顯示。

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

接下來(lái)要講的,才是 debug 中的重中之重,即斷點(diǎn)調(diào)試!

debug 的斷點(diǎn)調(diào)試

斷點(diǎn)調(diào)試,英文 breakpoint。用大白話來(lái)解釋下,斷點(diǎn)調(diào)試其實(shí)就是在程序自動(dòng)運(yùn)行的過(guò)程中,你在代碼某一處打上了斷點(diǎn),當(dāng)程序跑到你設(shè)置的斷點(diǎn)位置處,則會(huì)中斷下來(lái),此時(shí)你可以看到之前運(yùn)行過(guò)的所有程序變量。

來(lái)繼續(xù)剛才的演示,pycharm 中如何設(shè)置斷點(diǎn)。

點(diǎn)擊前:

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

點(diǎn)擊后,皮一下,每行代碼都設(shè)置上斷點(diǎn):

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

設(shè)置完斷點(diǎn)后,開(kāi)啟 debug 調(diào)試模式運(yùn)行下,看到結(jié)果:

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

看到了這么多新擺設(shè),是不是有點(diǎn)怕了!不怕,咱們先來(lái)從控制臺(tái)每個(gè)按鈕講起:

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

如果要是忘記中文意思的話,沒(méi)有關(guān)系,鼠標(biāo)指到按鈕處,懸浮一會(huì)兒,會(huì)有英文提示的。繼續(xù)再來(lái)說(shuō)橫排按鈕:

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

其中,橫排最重要,經(jīng)常用到的按鈕,來(lái)解釋一下,自己鼠標(biāo)懸浮去看英文即可:

step over(F8快捷鍵):在單步執(zhí)行時(shí),在函數(shù)內(nèi)遇到子函數(shù)時(shí)不會(huì)進(jìn)入子函數(shù)內(nèi)單步執(zhí)行,而是將子函數(shù)整個(gè)執(zhí)行完再停止,也就是把子函數(shù)整個(gè)作為一步。在不存在子函數(shù)的情況下是和step into效果一樣的。簡(jiǎn)單的說(shuō)就是,程序代碼越過(guò)子函數(shù),但子函數(shù)會(huì)執(zhí)行,且不進(jìn)入。

step into(F7快捷鍵):在單步執(zhí)行時(shí),遇到子函數(shù)就進(jìn)入并且繼續(xù)單步執(zhí)行,有的會(huì)跳到源代碼里面去執(zhí)行。

step into my code(Alt+Shift+F7快捷鍵):在單步執(zhí)行時(shí),遇到子函數(shù)就進(jìn)入并且繼續(xù)單步執(zhí)行,不會(huì)進(jìn)入到源碼中。

step out(Shift+F8快捷鍵):假如進(jìn)入了一個(gè)函數(shù)體中,你看了兩行代碼,不想看了,跳出當(dāng)前函數(shù)體內(nèi),返回到調(diào)用此函數(shù)的地方,即使用此功能即可。

Resume program(F9快捷鍵):繼續(xù)恢復(fù)程序,直接運(yùn)行到下一斷點(diǎn)處。

以上四個(gè)功能,就是最常用的功能,一般操作步驟就是,設(shè)置好斷點(diǎn),debug運(yùn)行,然后 F8 單步調(diào)試,遇到想進(jìn)入的函數(shù) F7 進(jìn)去,想出來(lái)在 shift + F8,跳過(guò)不想看的地方,直接設(shè)置下一個(gè)斷點(diǎn),然后 F9 過(guò)去。

示例演示

上面的基礎(chǔ)概念明白了以后,直接用圖片示例演示下:

1.設(shè)置初步斷點(diǎn)

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

2.F7 進(jìn)入函數(shù)

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

3.F8 單步調(diào)試,往下執(zhí)行代碼

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

繼續(xù) F8 單步調(diào)試,往下執(zhí)行代碼:

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

繼續(xù) F8 單步調(diào)試:

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

繼續(xù) F8 單步調(diào)試:

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)
新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

4.看夠了循環(huán),想直接看最終 result 加完的結(jié)果,結(jié)果處打斷點(diǎn),直接 F9

新手必會(huì),pycharm的調(diào)試功能(史上最詳篇)

以上就是斷點(diǎn)調(diào)試的全過(guò)程??赐曛?,理解了嗎~是不是頓時(shí)明白了斷點(diǎn)調(diào)試的重要性,使用斷點(diǎn)可以快速幫助我們理解程序中的各處邏輯!

結(jié)語(yǔ)

看到這里,基本的調(diào)試,相信你認(rèn)真看完的話,已經(jīng)可以上手使用了!但是要拓展的點(diǎn)還有很多,比如 pycharm 為什么在工程性的程序中頗受歡迎,因?yàn)樗鼘?shí)在是太強(qiáng)大了。。。還有一些拓展功能,大家可以去慕課網(wǎng)上搜下IntelliJ IDEA神器使用技巧 ,老師講的非常詳細(xì),涉及到許多技巧,idea和pycharm是一家公司出的,所以使用上的技巧也是一樣的,可以融會(huì)貫通。

慕課網(wǎng)課程具體地址(免費(fèi)課程):

https://www.imooc.com/learn/924

為什么在 Python 小課堂中,沒(méi)有提前介紹這么重要的技巧,其實(shí)是有所顧慮的,前期學(xué)習(xí)中,筆者認(rèn)為更多地精力應(yīng)該放在學(xué)習(xí)本身上,而非工具上,就算沒(méi)有debug,如果借助 Python 中的 print() 函數(shù)依然可以達(dá)到想要的結(jié)果,最笨的方法不就是一步步的 print 打印出你想要的結(jié)果嗎!然而笨方法往往使人印象深刻呢!

希望本篇文章可以幫到正在初學(xué)的你,寫(xiě)程序的過(guò)程中,斷點(diǎn)調(diào)試真的很重要??!

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多