最全Pycharm教程(3)——程式碼的除錯、執行
轉載於 https://blog.csdn.net/u013088062/article/details/50130991
1、準備工作
(1)Python版本為2.7或者更高版本
2、第一步——執行程式碼
開啟之前編寫的Solver.py檔案,在編輯框中右鍵,選擇快捷選單中的“Run 'Solver'”選項。
此時指令碼檔案正常執行並在除錯工具視窗中顯示程式的輸出值:
接下來我們對這兩步操作的具體內容做詳細的解釋。
3、什麼是Run/Debug模式
每個需要執行/除錯的指令碼檔案都需要一個特殊的配置檔案來指定其指令碼名稱、所在目錄以及其他重要的執行除錯資訊。Pycharm已經集成了這種配置檔案,避免使用者手動去建立。
每次當你單擊Run或者Debug按鈕時(或者在快捷選單中執行相同操作),實際上都是將當前的執行/除錯配置檔案載入到當前的除錯模型中。
如果你仔細觀察第一張圖片就會發現,在組合框中根本就沒有 run/debug的相關資訊,知道第二張圖片中它們才出現。這就意味著當執行執行/除錯命令的時候,Solver指令碼的run/debug配置檔案才會自動生成,正如現在所顯示的這樣。
此時再主工具欄中Run(綠色箭頭按鈕)和Debug(綠色甲殼蟲按鈕)兩個按鈕變得可用:
同時這兩個圖示還是半透明,也就意味著他們臨時的,即由Pycharm自動建立的。
OK,單擊下拉箭頭檢視當前的可用命令操作:
如果你已經設定了多個run/debug配置方案,它們將都會顯示在這裡下拉列表中,單擊選中一個作為當前工程的run/debug配置檔案。
4、儲存run/debug配置資訊
在上圖的下拉列表中,單擊Edit configuration選項,開啟run/debug配置編輯視窗:
在左側目錄中將會出現兩個節點:Python和Default。在第一個節點目錄下有一個單一的配置選項'Solver',在第二個選項下則有很多配置資訊。
這意味著什麼呢?
在Default節點下,你只能看到框架的名稱或者模式名稱,如果你建立一個新的Run/Debug配置檔案,它將會在所選中的模式分支下進行建立,如果你更改了Default節點下的設定,相應的與其相關的所有配置檔案都會更改。
例如,你想將Pycharm中所用到的Python直譯器替換成遠端或者本地直譯器,就可以通過更改Python頁面下的直譯器設定,這樣所有新建的除錯配置檔案都會使用這個新的直譯器。
早Python節點下,只用單一的配置選項'Solver',它屬於Python型別的配置,但與Default節點下的Python機制並不相同,它使用一個非透明的圖示進行的表示,這是用來指示當前配置檔案的儲存狀態的,當你儲存配置檔案之後圖示即變為非透明狀態。例如,我們在Python型別下為當前的Solver指令碼新建一個配置檔案,取名'Solver1'。
如果你對已存在的配置檔案做了任何更改,這些更改只會應用於對應的指令碼區域。
5、正式執行
我們已經能夠通過一種非常直接的方式,接下來我們尋求其他方法來執行指令碼。
正如我們所知,執行指令碼意味著載入當前的除錯配置檔案,因此,執行指令碼主要遵循以下流程:
(1)在主工具欄中,單擊run/debug組框,確認當前的除錯配置檔案資訊
(2)做下面的工作(三選一即可):
單擊執行按鈕,載入配置檔案
按下Shift+F10快捷鍵
在主選單上,選擇Run → Run
此時,我們可以在Run tool window.視窗中觀察程式的執行結果。
6、執行測試程式
我們這裡並不討論程式碼測試的重要性,而是探討Pycharm如何幫助我們完成這一功能。
7、選擇一個測試器
首先,需要指定一個測試器。單擊工具欄的設定按鈕,開啟Settings/Preferences對話方塊,然後單擊進入Python Intergated Tools頁面(可以通過搜尋功能找到),預設選擇如下:
在這裡我們選擇Nosetests,儲存並關閉對話方塊。
8、建立一個test程式塊
首先我們建立一個test例項。Pycharm提供了一種非常智慧的建立測試程式碼的方法:單擊選中類名然後按下Ctrl+Shift+T快捷鍵,或者在主選單中選擇Navigate → Test,如果test程式已存在,則會直接跳轉到對應程式碼,否則建立它:
按照系統提示進行操作,Pycharm會顯示如下對話方塊:
單擊OK按鈕,檢視建立結果:
此時Pycharm已經自動建立了一個測試類,當然這只是一個類框架,需要我們手動編寫測試函式。
9、執行測試程式碼
一切就緒後,右擊測試類名,在彈出的快捷選單中選擇執行命令:
10、除錯執行
首先要弄清楚,為什麼要進行除錯?假設我們的程式在執行過程中命中了一個錯誤,那我們如何定位錯誤發生的位置?這就需要進行除錯。
在Pycharm中我們可以在其中直接對程式進行除錯,唯一需要做的準備工作就是在程式必要的地方加設斷點,接下來我們進行詳細的介紹:
11、什麼是斷點?
一個breakpoint標記了一個行的位置,當程式執行到該行程式碼的時候,Pycharm會將程式暫時掛起以方便我們對程式的執行狀態進行分析。Pycharm支援若干中型別的斷點 types of breakpoints,可以通過對應圖示進行分辨。
這裡我們採用Python的行斷點為例進行介紹
12、設定斷點
方法非常簡單,單擊程式碼左側的空白灰色槽即可:
注意斷點會將對應的程式碼行標記為紅色,這種顏色標記目前還不能被使用者所更改,我們會盡快出臺解決方案。
順便說一句,取消斷點的操作也很簡單,在同樣位置再次單擊即可。
當你將滑鼠指標懸停在斷點上方時,Pycharm會顯示斷點的關鍵資訊,行號以及指令碼屬性,如果你希望更改該斷點的屬性,右擊斷點:
可以嘗試對斷點屬性進行個性化更改,然後觀察圖示的變化。
13、程式碼除錯
接下來,我們正式開始對程式碼進行除錯。
首先從配置檔案組框中選擇同名的'Solver'檔案作為當前除錯的配置檔案,然後單擊除錯按鈕(綠色甲殼蟲樣式的按鈕):
接下來會Pycharm會執行以下操作:
(1)PyCharm開始執行,並在斷點處暫停
(2)斷點所在程式碼行變藍,意味著Pycharm程式程序已經到達斷點處,但尚未執行斷點所標記的程式碼。
(3)Debug tool window窗口出現,顯示當前重要除錯資訊,並允許使用者對除錯程序進行更改。
雖然Pycharm使用手冊中已經完整提供了除錯視窗中所有控制元件的功能資訊,我們這裡仍然對其進行簡要介紹。我們發現視窗分為兩個選項卡:Debugger tab and the Console tab。
(1)Debugger視窗分為三個可見區域:Frames, Variables, 和 Watches。這些視窗列出了當前的框架、執行的程序,方便使用者檢視程式空間中變數的狀態等。當你選擇一個框架,就會顯示出相關的變數資訊,當然這些區域都是可以摺疊隱藏的。
(2)Console視窗顯示當前的控制檯輸出資訊,預設這個視窗位於Debugger之下,可以通過單擊其標籤將其前置顯示。
當然我們可以改變這些視窗的擺放位置,如果你不喜歡程式的預設排版的話。具體參加Moving tabs and areas章節。
Debugger視窗的工作模式:
OK,現在程式暫停在了第一斷點處,Frames視窗顯示的是Solver指令碼的第7行程式碼所對應的程序demo,相關變數a、b、c已經定義,但變數d尚未進行定義。接下來?
按下F9(或者左側工具欄的綠色箭頭),程式會繼續執行到下一斷點處,通過這種方式你可以將每個斷點都執行一遍,觀察變數的變化。
Console視窗的工作模式:
為什麼需要用到Console視窗呢?當我們需要檢視程式給出的錯誤資訊,或者進行一些額外的臨時運算時,就需要在這個窗口裡面進行。
單擊Console選項卡使其前置:
然後單擊左側工具欄中的命令符按鈕,顯示Python的命令提示符:
此時激活了控制檯機制,嘗試在其中執行一些Python命令:
注意到控制檯視窗提供了程式碼的拼寫提示(Ctrl+Space)以及歷史記憶(Up/Down keys)功能,更多資訊參見: Using Debug Console
最後,如果你希望Console視窗一直處於可用狀態,只需將其移動成為一個單獨的視窗即可:
14、再次執行
在完成了本次除錯執行並再次載入除錯配置檔案之後,我們可以再次執行除錯,單擊工具欄的run按鈕即可。
15、REPL——在控制檯介面除錯程式
最後,如果你更習慣工作於控制檯環境下,也可以將Pycharm設定成為控制檯模式。在主選單中選擇Tools → Run Python Console...來載入控制檯:
此時console視窗將會被啟用,並顯示為一個單獨的視窗:
在這個控制檯視窗中我們可以做很多有意思的事情,接下來我們演示如何將最近編寫的Solver.py檔案中的程式碼匯入到控制檯:
開啟Solver.py檔案(開啟的方法多種多樣,例如Ctrl+E - View → Recent Files),全選檔案中的程式碼內容(Ctrl+A, or Edit → Select All),然後按下Alt+Shift+E(或者右擊在彈出的快捷選單中選擇Execute Selection in Console):
此時,Pycharm就會自動將選中的程式碼匯入到控制檯介面,方便我們對其進行編輯: