再論 Code Map - 在 Visual Studio 中進行圖形化偵錯,找 Bug 更容易

註: 內文提及Visual Studio Ultimate已於 2015/3月改名為 Visual Studio Enterprise

各位朋友們,

在上一些說明 Code Map 如何幫助你快速了解一堆程式碼的關連,本篇將說明 Code Map 如何用圖形化的方式讓偵錯更容易!

還沒看過第一篇的朋友由此進 - 快速理解一堆程式碼的方法 - 使用 Visual Studio 2013 的 Code Map 程式碼地圖

若想學習更多可觀看這影片 - 正確的團隊寫碼標準 - 兼顧開發效率及程式碼品質

 

--------------------------------------------------------------------------------------------------

在偵錯時,請建立程式碼對應以視覺方式追蹤呼叫堆疊。 您可以在對應上做筆記,追蹤程式碼的執行狀況,以便專注於尋找並修正 Bug。

使用 Code Map 上的堆疊呼叫來偵錯

 

您將需要: Visual Studio Ultimate 2013 版本,程式碼進行偵錯,例如 .NET Visual C#、Visual Basic .NET 中, C++、JavaScript。 若要視覺化跨多個應用程式共用,如 Windows 市集和視窗的程式碼中呼叫,請確定您擁有 Visual Studio 2013 更新 2 (含) 以後版本

請參閱:影片:透過 Code Map 偵錯工具整合,以視覺化方式偵錯 (Channel 9)對應呼叫堆疊加入有關程式碼的注意事項以下一個呼叫堆疊更新對應將相關程式碼加入至對應使用對應尋找 Bug問答

1. 對應呼叫堆疊

 

  1. 開始偵錯

  2. 當應用程式進入中斷模式或是您逐步執行函式時,請選取 [程式碼對應]。(鍵盤:Ctrl + Shift + `)

    選擇 [Code Map] 開始對應堆疊呼叫

     

    目前的呼叫堆疊在新的 code map 上顯示橙色:

    查看 Code Map 上的堆疊呼叫

     

    對應一開始可能並不十分有趣,不過,當您繼續偵錯時,它會自動更新。 請參閱以下一個呼叫堆疊更新對應

2. 加入有關程式碼的注意事項

 

加入註解以追蹤程式碼中發生的狀況。 若要在註解中加入新行,請按 Shift + Return。

為 Code Map 上的堆疊呼叫加入註解

3. 以下一個呼叫堆疊更新對應

 

執行應用程式到下一個中斷點或逐步執行函式。 對應加入新的呼叫堆疊。

使用下一個堆疊呼叫來更新 Code Map

4. 將相關程式碼加入至對應

 

現在您已取得地圖,下一步做什麼? 如果您使用 Visual C# .NET 或 Visual Basic .NET,請加入項目 (例如欄位、屬性及其他方法) 以追蹤程式碼中發生的情況。

按兩下方法以查看其程式碼定義。(鍵盤:選取地圖上的方法並按下 F12)

移至 Code Map 上方法的程式碼定義

 

加入您要在對應上追蹤的項目。

顯示堆疊呼叫 Code Map 上的方法中的欄位

 

與堆疊呼叫 Code Map 上的方法相關的欄位

 

您可以在這裡輕鬆查看哪些方法使用相同的欄位。 新加入的項目會以綠色顯示。

繼續建置對應來查看更多程式碼。

查看使用欄位的方法:堆疊呼叫 Code Map

 

堆疊呼叫 Code Map 上使用欄位的方法

5. 使用地圖尋找錯誤 (bug)。

 

視覺化程式碼可協助您更快速找到 Bug。 例如,假設您正在調查繪圖程式中的錯誤 (bug)。 當您繪製線條和嘗試復原時,不會發生任何動作,直到您繪製另一個線條。

因此您設定中斷點,開始偵錯,並建置對應如下:

將其他堆疊呼叫加入至 Code Map

 

您會注意到對應中的所有使用者筆勢呼叫 Repaint,除了 undo 之外。 這可能會解譯 undo 為何不會立即執行。

在修正錯誤並繼續執行程式之後,地圖會嘗試加入從 undo 到 Repaint 的新呼叫:

為 Code Map 上的堆疊呼叫新增方法呼叫

問與答

 

  • 並非所有的呼叫會出現在地圖上。 為什麼?

    根據預設,只有您的程式碼會出現在對應上。 若要查看外部程式碼,請於 [呼叫堆疊] 視窗中開啟它,或關閉 Visual Studio 偵錯選項上的 [啟用 Just My Code]。

  • 變更對應是否會影響程式碼?

    變更對應完全不會影響程式碼。 請儘管重新命名、移動,或移除地圖上的任何項目。

  • 這個訊息是什麼意思:「圖表可能是根據舊版程式碼建立的」?

    在您上次更新對應之後,程式碼可能已經變更。 例如,在地圖上的呼叫可能不再存在於程式碼。 關閉訊息,然後在重新更新對應之前,嘗試重建方案。

  • 如何控制地圖的配置?

    開啟位於對應工具列上的 [版面配置] 功能表:

    • 變更預設配置。

    • 若要停止自動重新整理對應,請關閉 [偵錯時自動配置]。

    • 若要在加入項目時盡可能減少重新整理對應,請關閉 [累加配置]。

  • 我是否可以和其他人共用對應?

    您可以匯出對應,傳送給其他人 (如果您有 Microsoft Outlook),也可以將它儲存到方案中,以便將它簽入 Team Foundation 版本控制項。

    與其他人共用堆疊呼叫 Code Map

     

  • 如何讓地圖停止自動加入新的呼叫堆疊?

    選擇地圖工具列上的 。 若要手動將目前呼叫堆疊加入至對應,請按下 Ctrl + Shift + `。

    在偵錯時,對應會繼續反白顯示對應上現有的呼叫堆疊。

  • 項目圖示和箭號是什麼意思?

    若要取得有關項目的詳細資訊,請參閱項目的工具提示。 您也可以查看 [圖例] 了解每個圖示表示。

    堆疊呼叫 Code Map 上的圖示代表什麼意思?

 

 

第一次認識 Code Map 由此進 - 快速理解一堆程式碼的方法 - 使用 Visual Studio 2013 的 Code Map 程式碼地圖

若想學習更多可觀看這影片 - 正確的團隊寫碼標準 - 兼顧開發效率及程式碼品質