共用方式為


教學課程:在Visual Studio的調試程式中執行程序代碼

本文介紹教學課程系列中的第 4 步:在 Visual Studio 中使用 Python

Visual Studio 提供功能來管理專案、豐富的編輯體驗、互動式視窗,以及 Python 程式代碼的完整功能偵錯。 在本教學課程系列的步驟 4 中,您會使用 偵錯工具 逐行執行程式碼,包括迴圈的每次迭代。 在 調試程式中,每當特定條件成立時,您就可以暫停程式。 在程序暫停時的任何時間點,您可以檢查整個程序狀態,並變更變數的值。 這類動作對於追蹤程式 Bug 至關重要,也提供協助以遵循確切的程式流程。

在教學課程的步驟 4 中,您將瞭解如何:

  • 在 Visual Studio 中的 調試程式 中執行 Python 程式代碼
  • 設定斷點和條件
  • 檢查程式狀態和變更變數
  • 探索 調試程式 視窗和動作

先決條件

準備 Python 檔案

若要準備偵錯練習,請遵循下列步驟來更新 Python 項目檔,以包含更健全的程式代碼:

  1. 在編輯器中開啟 Python 專案檔 (.py)。

  2. 以下列程式代碼取代 檔案中的程序代碼。 此版本的程式代碼會展開 make_dot_string 函式,讓您可以在調試程式中檢查其離散步驟。 它會將 for 迴圈移至 main 函式,並藉由呼叫 main 函式來明確執行:

    from math import cos, radians
    
    # Create a string with spaces proportional to a cosine of x in degrees
    def make_dot_string(x):
        rad = radians(x)                             # cos works with radians
        numspaces = int(20 * cos(rad) + 20)          # Scale to 0-40 spaces
        st = ' ' * numspaces + 'o'                   # Place 'o' after the spaces
        return st
    
    def main():
        for i in range(0, 1800, 12):
            s = make_dot_string(i)
            print(s)
    
    main()
    

開始偵錯

現在您已準備好開始在 調試程式中檢查更新的 Python 程式代碼。

  1. 選取工具列上的 [偵錯]>[開始偵錯],或使用 F5 鍵盤快捷方式,確認程式代碼正常運作。 這些命令會在 調試程式中執行程序代碼。

    調試程式 不會偵測到任何問題,因此程式會順利執行。 輸出視窗隨即開啟,您會看到餘弦波圖案的幾個反覆運算。 按下任意按鍵以關閉輸出視窗。

    提示

    若要在程式完成時自動關閉輸出視窗,請選取 [工具]>[選項],展開 [Python>偵錯] 索引標籤,然後清除 [進程正常結束時等候輸入] 選項。

  2. 使用下列其中一種方法,在 for 循環語句上設定斷點:

    • 在程式代碼列的左邊界中選取 。
    • 以滑鼠右鍵按下程式代碼行,然後選取 [斷點]>[插入斷點]
    • 將插入號放在程式碼行中,然後選取 [偵錯]>[切換斷點](或使用鍵盤快捷鍵 F9)。

    斷點會在標示點停止執行程序代碼,以便檢查程序狀態。 每個具有設定斷點的行上會出現一個紅點。

    顯示如何在 Visual Studio 中的調試程式中設定斷點的螢幕快照。

  3. 再次啟動 調試程式F5)。 程序執行中的程式代碼會停止於具有設定斷點的行上。 您現在可以檢查呼叫堆疊,並檢查執行中程式代碼的這個狀態變數。

    Visual Studio 提供許多方法來觀察程式代碼和執行數據,包括下列視窗:

    • 呼叫堆疊 顯示程式代碼的函式和方法呼叫歷程記錄。
    • 定義範圍內的變數會出現在 [自動] 視窗中。
    • [局部變數] 檢視會顯示Visual Studio在目前範圍中尋找的所有變數(包括函式),甚至在程式碼中定義變數之前也一樣。

    若要查看可用視窗和動作的完整清單,請選取 [偵錯]>[Windows]。

    您可以開啟 除錯程式 視窗,以在遇到斷點時檢視程式狀態:

    Visual Studio 在設定斷點停止時顯示程式狀態的調試程式視窗螢幕快照。

使用偵錯動作

當 Visual Studio 在斷點停止程式代碼執行時,有數個命令可用來逐步執行程式碼或執行程式碼區塊,然後再中斷一次。 命令可在 Visual Studio 的幾個位置使用,包括 調試程式 工具列、偵錯 功能表、程式代碼編輯器中的滑鼠右鍵操作功能表,以及透過鍵盤快捷方式。

調試程式 工具列位於 Visual Studio 視窗頂端,可讓您快速存取最常見的偵錯命令:

Visual Studio 中調試程式工具列的螢幕快照。

下表摘要說明工具列上從左至右出現的這些命令:

行動 捷徑 描述
繼續 F5 執行程序代碼,直到您到達下一個斷點或程式完成為止。
破壞全部 Ctrl+Alt+Break 暫停長時間執行的程式。
停止偵錯 Shift+F5 在目前點停止程式,並退出 偵錯器
重新啟動 Ctrl+Shift+F5 在目前點停止程式,並從 調試程式開始重新啟動程式執行,
顯示下一個語句 Alt+Num+\ 返回下一個語句,以在程式碼中執行。 此命令可協助您在程式代碼中找出停止 調試程式 的位置。
邁入 F11 執行下一個語句並停止。 如果下一個語句是函式的呼叫,則 調試程式 逐步執行函式,並在第一行停止。
單步執行 F10 執行下一個語句,包括呼叫函式(執行其所有程序代碼),以及套用任何傳回值。 此命令可讓您輕鬆地略過不需要偵錯的函式。
逐步退出 Shift+F11 執行程式代碼直到目前函式的結尾,然後跳到呼叫語句並暫停。 當您不需要偵錯目前函式的其餘部分時,此命令會很有用。

請遵循下列步驟,在 Python 程式代碼中使用 調試程式 動作:

  1. 使用 逐步執行 動作,跳過 for 迴圈語句。

    逐步執行 會導致 調試程式 執行目前的程式代碼行,包括任何呼叫的函式,然後立即暫停。 在逐步執行之後,請注意變數 i 現在定義於 局部變數自動變數 視窗中。

  2. 逐步執行 下一行程式碼,該行會呼叫 make_dot_string 函式。

    在此實例中,步過 會導致 偵錯工具 執行整個 make_dot_string 函式,並在函式傳回後暫停。 除非有個別的斷點存在,否則 調試程式 不會在函式內停止。

  3. 繼續逐一執行程式碼數次,並觀察 [局部變數][自動] 視窗中的值如何變更。

  4. 在 [局部變數] 或 [自動] 視窗中,按兩下變數的 [] 欄來修改該值。 在這裡範例中,將 s 變數的值變更為 'Hello, Python Application'。 請務必以單引弧括住值。 選取 ,輸入,或點擊數值之外的任何區域以套用您的變更。

    顯示如何在 Visual Studio 偵錯期間,在 [局部變數] 視窗中變更變數值的螢幕快照。

  5. 繼續逐步執行程式代碼,方法是使用 逐步執行,直到呼叫 make_dot_string 函式為止。

    針對函式,步入 會導致 除錯器 既呼叫函式,也步入函式代碼。 當除錯過程在函式內部時,您可以檢查其局部變數,並逐一執行其程式碼。 在此範例中,步入 動作會移至 make_dot_string 函式。

  6. 繼續執行 ,進入,直到從 make_dot_string 函式傳回為止。

    當您到達 make_dot_string 函式程式代碼的結尾時,下一個步驟會將 *調試程式 傳回 for 迴圈,並在 s 變數中使用新的傳回值。

    當您再次執行至 print 語句時,請注意,print 語句上的 執行進入 動作不會進入該函式。 此行為是因為 print 函式並未以 Python 撰寫。 它是 Python 執行環境內的原生碼。

  7. 繼續使用 逐步執行,直到再次進入 make_dot_string 函式,然後使用 逐步返回,並注意到 調試程式 會返回 for 迴圈。

    使用 Step Out時,調試程式 會執行函式的其餘部分,然後在呼叫的程式代碼中自動暫停。 當您逐步執行冗長的函式的某些部分,並想要結束對函式的觀察之後,此動作會很有幫助。 步出 步過其餘程式碼,或直到到達呼叫代碼中設定的明確斷點為止。

  8. 繼續執行程式,直到使用 Continue 到達下一個斷點為止(F5)。 由於您在 for 循環中設置了斷點,因此您會在下一次迴圈中中斷。

    您可以觀察 [[ 局部變數] 視窗中 s 變數的變更值,以確認程式正在繼續執行。

使用斷點條件

逐步執行循環中的數百次迭代可能會很繁瑣,因此 Visual Studio 允許您將 條件新增至斷點。 當您設定斷點條件時,調試程式 只有在符合條件時,才會在斷點暫停程式。

下列步驟示範如何在 for 迴圈語句上定義斷點條件,讓 調試程式 只在 i 變數的值超過 1600 時暫停:

  1. 若要設定斷點條件,請以滑鼠右鍵按兩下紅色斷點點,然後選取 [條件] 或使用鍵盤快捷方式 Alt+F9>C

  2. 在 [斷點設定 彈出視窗] 中,配置下列項目以建立 條件

    1. 將條件類型設定為 條件表示式

    2. 定義條件評估,當 為真時

    3. 輸入 i > 1600 做為條件值。

    4. 選取 關閉

    顯示如何在Visual Studio的調試程式中設定條件式斷點的螢幕快照。

  3. 選取 F5 以繼續偵錯和程序執行。 請注意程式在到達條件斷點之前會執行多次迭代。

    您可以確認 調試程式 到達條件斷點時,正確地暫停程序執行。 符合條件時,[局部變數] 視窗會將 i 變數值顯示為 1608

  4. 若要讓程式完整執行,您可以停用斷點並繼續程式的執行。

    1. 將滑鼠停留在紅點上,然後選取 [停用],或以滑鼠右鍵點選紅點,然後選取 [停用斷點]。

    2. 選取 繼續(或按 F5)來執行程式。

    程序結束時,Visual Studio 會停止偵錯會話,並返回編輯模式。

    您也可以刪除斷點。 選取紅點或以滑鼠右鍵按下該點,然後選取 刪除斷點。 此動作也會刪除任何已定義的條件。

提示

在某些情況下,例如無法啟動 Python 解釋器本身時,Python 輸出視窗可能會在程式執行完畢後立刻關閉,而不會暫停或顯示「按任意鍵以繼續」提示。 若要強制暫停並提示,請將 -i 自變數新增 至 [偵錯] 索引標籤上的 [執行>解釋器自變數] 欄位。這個自變數會在程式代碼執行之後,讓 Python 解釋器進入互動式模式。 程式會等候您選取 ctrl+Z+Enter 來關閉視窗。

下一步