[Pycharm] Debugger in Pycharm

From: http://blog.csdn.net/u013088062/article/details/50214459html

From: http://blog.csdn.net/u013088062/article/details/50216015web

From: http://blog.csdn.net/u013088062/article/details/50221825express

 

最全Pycharm教程(10)——Pycharm調試器總篇windows

最全Pycharm教程(11)——Pycharm調試器之斷點篇session

調試設置函數

調試過程工具

設置斷點佈局

條件性控制斷點測試

 


調試設置

  四、Run/debug 配置知識this

  每當你經過Pycharm來運行或者調試一個腳本文件時,都須要一個特殊的文件記錄腳本的名稱、工做目錄以及其餘的重要調試信息。Pycharm已經針對特定模式預先建立好了配置文件,避免咱們手動去建立。

  每次你單擊運行或者調試按鈕時(或者經過快捷菜單執行相同的操做),咱們實際上都是在當前工做模式中加載了對應的配置文件。詳見product documentation

 

  五、斷點

  一個斷點標記了一個代碼行,當Pycharm運行到該行代碼時會將程序暫時掛起。Pycharm提供了幾種形式的斷點 types of breakpoints,其圖標 icon各不相同。詳見 product documentation中的Breakpoints tutorial

 

  六、實例

  在你的Python工程中,建立一個新的Python文件,命名爲ThreadSample.py,而後輸入如下代碼:

  

 

  七、設置斷點

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

  

 

  八、開始調試

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

  

  斷點所在的行變爲藍色,說明Pycharm已經擊中了這個斷點,但還沒有執行這行代碼。

 

  九、更改調試窗口的佈局

  此時Pycharm進入調試界面模式Debug tool window,各個控件的具體功能詳見know how to use this tool window

  加入你並不喜歡當前的默認佈局,例如你但願將調試器輸出窗口做爲一個獨立的窗口顯示以便更方便的觀察當前的調試狀態,你能夠對佈局進行個性化定製。

  首先,咱們先把調試工具窗口獨立出來,只須要右擊窗口的標題欄,而後選擇Floating mode

  

  接下來將控制檯窗口移動成爲一個獨立的窗口,只須要拖動控制檯窗口將其拖出測試窗口便可:

  

  能夠經過單擊工具欄上的按鈕來恢復到默認佈局。

  更多信息請參見PyCharm Tool WindowsMoving tabs and area

 

  十、添加一個變量查看器

  接下來咱們介紹如何在調試過程當中觀察變量的狀態。咱們須要對其設置一個查看器。在Watches窗口中,單擊綠色的加號,輸入指望查看的變量名稱,

  例如這裏輸入delay,而後回車。固然你也能夠採用另一種方式:在編輯窗口中右擊變量名,在快捷菜單中選擇Add to watches

  此時觀察Watches窗口,發現delay變量目前還沒有定義:

  

  稍後你將會看到如何對這個變量進行賦值,以及其在watches窗口中的變化。接下來咱們爲get_thread_name()函數設置一個查看器做爲練習。

 

  十一、瀏覽幀

  此時你能看到一個名爲 MainThread 進程,其中包含三幀。單擊每一幀來顯示其變量狀態以及相對應的py文件,同時會對有問題的代碼行以高亮顯示:

  

 

 


調試過程

  十二、簡單的調試

  在每一個斷點處都單擊按鈕來使程序繼續運行,觀察控制檯的腳本輸出:

  

  

  1三、步進式腳本調試

  讓咱們對當前腳本進行進一步的調試。單擊重啓調試進程,程序再次運行到第一個斷點處並暫停。

  在調試窗口的頂端,你會看到一列包含步進調試按鈕的工具欄 stepping buttons

  單擊,或者按下F8,你會發現藍色標記移動到了下一行

  

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

  

 

  1四、運行到當前光標處  

  假如你不想加入斷點,但仍但願代碼可以調試運行到某一指定的代碼行,如何操做?

  返回調試界面的第二個斷點處,在對應行插入輸入光標。

  

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

  

 

  1五、如何調用Debug命令

  值得一提的是全部的調試操做不只僅能夠經過調試工具欄的對應按鈕來完成,還能夠經過主菜單中Run菜單下的命令來實現,以及相關的快捷菜單項。下面給出一些經常使用的調試菜單命令及其對應的快捷鍵列表:

  

  更多控件描述參見Debug tool window

 


設置斷點

  三、斷點屬性

  有兩種方法來瀏覽和改變代碼屬性:

  (1)首先,有一個單獨的置頂窗口來顯示斷點屬性。

  (2)有一個斷點對話框 Breakpoints dialog來顯示當前應用中所存在的全部斷點及其屬性。

 

  四、設置斷點

  選中對應代碼行,而後執行下面步驟(二選一):

  (1)單擊左邊空白槽

  (2)按下Ctrl+F8快捷鍵

  這是一個觸發開關式的操做,便可以不斷的重複操做以移除/添加斷點。

  做爲練習,在第16行設置斷點:

  

 

  五、瀏覽並改變斷點屬性

  爲了瀏覽單獨一個斷點的屬性,只需右擊它便可:

  

 


激活斷點

  六、啓用和關閉斷點

  首先,清空複選框中的Line 16 in ThreadSample.py enabled選項,此時斷點會失效,同時圖標中心會變爲綠色:

  

  OK,再次勾選複選框,圖標恢復原狀,斷點生效。

 


條件性控制斷點

  七、條件性代碼懸掛

  假設你但願Pycharm在當前代碼處只掛起某一個線程,而其餘線程可以正常經過斷點,操做很是簡單,爲斷點添加一個條件便可:

  

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

  

 

  八、如何忽略某些斷點?

  一般狀況下,你只須要在某一個斷點處停下來,而但願在其餘斷點可以正常經過。

  換句話說就是咱們並不但願Pycharm在斷點處中止,但咱們仍須要保留對應斷點來做爲標記,如何實現?

  在對話框中取消Suspend複選框的勾選,此時斷點屬性對話框中會顯示更詳細的信息:

  

  勾選一下兩個選項:

    (1)Log messages to console選中這個選項後,Pycharm會在命中該斷點後在控制檯上顯示相關重要信息。

    (2)Log evaluated expressions選中這個選項以後,Pycharm會計算下方輸入框中給出的特定表達式並顯示在控制檯上。

 

  

  順便說一下,在下發輸入框中輸入表達式時Pycharm一樣提供了拼寫提示功能(Ctrl+空格)。OK,從新運行調試,Pycharm會在調試控制檯中顯示一下信息:

  • 應用的基本信息。
  • 擊中斷點時的註冊信息
  • 表達式的計算結果

  

 

  九、瀏覽全部斷點

  以上你使用到的全部斷點相關的對話框都能幫助你獲取斷點的大部分重要信息。不過咱們一般使用 Breakpoints dialog對話框來完成大部分斷點處理工做,它會顯示當前項目中的全部斷點的屬性信息,並方便咱們對其進行更改。

  咱們能夠經過如下幾種方式來打開這個對話框

  1.  Ctrl+Shift+F8快捷鍵
  2.  在主菜單中選中Run → View Breakpoints
  3.  在斷點屬性快捷對話框中單擊More (Ctrl+Shift+F8)
  4.  在調試窗口中單擊按鈕。

 

  十、建立一個臨時斷點

  假設你但願這樣一個斷點,即Pycharm在命中它以後就將命中的斷點刪除。Pycharm提供了一個特殊的複選項Remove once hit默認狀況下是不會啓動這個機制的

  加入Suspend複選框已經選中,接下來再選中Remove once hit複選框,觀察斷點的圖標的變化:

  

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

  

相關文章
相關標籤/搜索