From: http://blog.csdn.net/u013088062/article/details/50214459
From: http://blog.csdn.net/u013088062/article/details/50216015
From: http://blog.csdn.net/u013088062/article/details/50221825
最全Pycharm教程(11)——Pycharm調試器之斷點篇
調試設置
調試過程
設置斷點
條件性控制斷點
調試設置
4、Run/debug 配置知識
每當你通過Pycharm來運行或者調試一個腳本文件時,都需要一個特殊的文件來記錄腳本的名稱、工作目錄以及其他的重要調試信息。Pycharm已經針對特定模式預先創建好了配置文件,避免我們手動去創建。
每次你單擊運行或者調試按鈕時(或者通過快捷菜單執行相同的操作),我們實際上都是在當前工作模式中加載了對應的配置文件。詳見product documentation。
5、斷點
一個斷點標記了一個代碼行,當Pycharm運行到該行代碼時會將程序暫時掛起。Pycharm提供了幾種形式的斷點 types of breakpoints,其圖標 icon各不相同。詳見 product documentation中的Breakpoints tutorial。
6、實例
在你的Python工程中,創建一個新的Python文件,命名為ThreadSample.py,然后輸入以下代碼:

7、設置斷點
首先,在源碼中設置斷點。通過單擊代碼左側的空白槽來在對應位置生成斷點:

8、開始調試
選擇 run/debug configuration "ThreadSample",然后按下Shift+F9(或者單擊工具欄中的綠色蜘蛛形式的按鈕),調試開始,並在第一個斷點處停止:

斷點所在的行變為藍色,說明Pycharm已經擊中了這個斷點,但尚未執行這行代碼。
9、更改調試窗口的布局
此時Pycharm進入調試界面模式Debug tool window,各個控件的具體功能詳見know how to use this tool window。
加入你並不喜歡當前的默認布局,例如你希望將調試器輸出窗口作為一個獨立的窗口顯示以便更方便的觀察當前的調試狀態,你可以對布局進行個性化定制。
首先,我們先把調試工具窗口獨立出來,只需要右擊窗口的標題欄,然后選擇Floating mode:

接下來將控制台窗口移動成為一個獨立的窗口,只需要拖動控制台窗口將其拖出測試窗口即可:

可以通過單擊工具欄上的
按鈕來恢復到默認布局。
更多信息請參見PyCharm Tool Windows和Moving tabs and area
10、添加一個變量查看器
接下來我們介紹如何在調試過程中觀察變量的狀態。我們需要對其設置一個查看器。在Watches窗口中,單擊綠色的加號,輸入期望查看的變量名稱,
例如這里輸入delay,然后回車。當然你也可以采用另外一種方式:在編輯窗口中右擊變量名,在快捷菜單中選擇Add to watches:
此時觀察Watches窗口,發現delay變量目前尚未定義:

稍后你將會看到如何對這個變量進行賦值,以及其在watches窗口中的變化。接下來我們為get_thread_name()函數設置一個查看器作為練習。
11、瀏覽幀
此時你能看到一個名為 MainThread 進程,其中包含三幀。單擊每一幀來顯示其變量狀態以及相對應的py文件,同時會對有問題的代碼行以高亮顯示:

調試過程
12、簡單的調試
在每個斷點處都單擊
按鈕來使程序繼續運行,觀察控制台的腳本輸出:

13、步進式腳本調試
讓我們對當前腳本進行進一步的調試。單擊
重啟調試進程,程序再次運行到第一個斷點處並暫停。
在調試窗口的頂端,你會看到一列包含步進調試按鈕的工具欄 stepping buttons。
單擊
,或者按下F8,你會發現藍色標記移動到了下一行:

與此同時,當你暫停了腳本執行時(單擊
按鈕),你能看到高亮表示的函數print_time(),你可以選擇其中的任何一個進程,並觀察變量的變化:

14、運行到當前光標處
假如你不想加入斷點,但仍希望代碼能夠調試運行到某一指定的代碼行,如何操作?
返回調試界面的第二個斷點處,在對應行插入輸入光標。

單擊
按鈕,或者按下Alt+F9快捷鍵,該行代碼變為高亮顯示:

15、如何調用Debug命令
值得一提的是所有的調試操作不僅僅可以通過調試工具欄的對應按鈕來完成,還可以通過主菜單中Run菜單下的命令來實現,以及相關的快捷菜單項。下面給出一些常用的調試菜單命令及其對應的快捷鍵列表:

更多控件描述參見Debug tool window。
設置斷點
3、斷點屬性
有兩種方法來瀏覽和改變代碼屬性:
(1)首先,有一個單獨的置頂窗口來顯示斷點屬性。
(2)有一個斷點對話框 Breakpoints dialog來顯示當前應用中所存在的所有斷點及其屬性。
4、設置斷點
選中對應代碼行,然后執行下面步驟(二選一):
(1)單擊左邊空白槽
(2)按下Ctrl+F8快捷鍵
這是一個觸發開關式的操作,即可以不斷的重復操作以移除/添加斷點。
作為練習,在第16行設置斷點:

5、瀏覽並改變斷點屬性
為了瀏覽單獨一個斷點的屬性,只需右擊它即可:

激活斷點
6、啟用和關閉斷點
首先,清空復選框中的Line 16 in ThreadSample.py enabled選項,此時斷點會失效,同時圖標中心會變為綠色:

OK,再次勾選復選框,圖標恢復原狀,斷點生效。
條件性控制斷點
7、條件性代碼懸掛
假設你希望Pycharm在當前代碼處只掛起某一個線程,而其他線程能夠正常通過斷點,操作非常簡單,為斷點添加一個條件即可:

接下來我們開始腳本調試(單擊工具欄中的
按鈕),你會看到實際上Pycharm只在當前斷點處掛起了Thread-7,而Thread-6正常通過了該斷點:

8、如何忽略某些斷點?
通常情況下,你只需要在某一個斷點處停下來,而希望在其他斷點能夠正常通過。
換句話說就是我們並不希望Pycharm在斷點處停止,但我們仍需要保留對應斷點來作為標記,如何實現?
在對話框中取消Suspend復選框的勾選,此時斷點屬性對話框中會顯示更詳細的信息:

勾選一下兩個選項:
(1)Log messages to console:選中這個選項后,Pycharm會在命中該斷點后在控制台上顯示相關重要信息。
(2)Log evaluated expressions:選中這個選項之后,Pycharm會計算下方輸入框中給出的特定表達式並顯示在控制台上。

順便說一下,在下發輸入框中輸入表達式時Pycharm同樣提供了拼寫提示功能(Ctrl+空格)。OK,重新運行調試,Pycharm會在調試控制台中顯示一下信息:
- 應用的基本信息。
- 擊中斷點時的注冊信息
- 表達式的計算結果

9、瀏覽所有斷點
以上你使用到的所有斷點相關的對話框都能幫助你獲取斷點的大部分重要信息。不過我們通常使用 Breakpoints dialog對話框來完成大部分斷點處理工作,它會顯示當前項目中的所有斷點的屬性信息,並方便我們對其進行更改。
我們可以通過以下幾種方式來打開這個對話框:
- Ctrl+Shift+F8快捷鍵
- 在主菜單中選中Run → View Breakpoints
- 在斷點屬性快捷對話框中單擊More (Ctrl+Shift+F8)
- 在調試窗口中單擊
按鈕。
10、創建一個臨時斷點
假設你希望這樣一個斷點,即Pycharm在命中它之后就將命中的斷點刪除。Pycharm提供了一個特殊的復選項Remove once hit,默認情況下是不會啟動這個機制的。
加入Suspend復選框已經選中,接下來再選中Remove once hit復選框,觀察斷點的圖標的變化:

重新調試,發現Pycharm只會在斷點處暫停一次,之后便會將其移除,以保證之后的程序執行不會受到阻礙:

