再論 Code Map - 在 Visual Studio 中進行圖形化偵錯,找 Bug 更容易
註: 內文提及Visual Studio Ultimate已於 2015/3月改名為 Visual Studio Enterprise
各位朋友們,
在上一些說明 Code Map 如何幫助你快速了解一堆程式碼的關連,本篇將說明 Code Map 如何用圖形化的方式讓偵錯更容易!
還沒看過第一篇的朋友由此進 - 快速理解一堆程式碼的方法 - 使用 Visual Studio 2013 的 Code Map 程式碼地圖
若想學習更多可觀看這影片 - 正確的團隊寫碼標準 - 兼顧開發效率及程式碼品質
--------------------------------------------------------------------------------------------------
在偵錯時,請建立程式碼對應以視覺方式追蹤呼叫堆疊。 您可以在對應上做筆記,追蹤程式碼的執行狀況,以便專注於尋找並修正 Bug。
您將需要: Visual Studio Ultimate 2013 版本,程式碼進行偵錯,例如 .NET Visual C#、Visual Basic .NET 中, C++、JavaScript。 若要視覺化跨多個應用程式共用,如 Windows 市集和視窗的程式碼中呼叫,請確定您擁有 Visual Studio 2013 更新 2 (含) 以後版本。
請參閱:影片:透過 Code Map 偵錯工具整合,以視覺化方式偵錯 (Channel 9) • 對應呼叫堆疊 • 加入有關程式碼的注意事項 • 以下一個呼叫堆疊更新對應 • 將相關程式碼加入至對應 • 使用對應尋找 Bug • 問答
1. 對應呼叫堆疊
開始偵錯。
當應用程式進入中斷模式或是您逐步執行函式時,請選取 [程式碼對應]。(鍵盤:Ctrl + Shift + `)
目前的呼叫堆疊在新的 code map 上顯示橙色:
對應一開始可能並不十分有趣,不過,當您繼續偵錯時,它會自動更新。 請參閱以下一個呼叫堆疊更新對應。
2. 加入有關程式碼的注意事項
加入註解以追蹤程式碼中發生的狀況。 若要在註解中加入新行,請按 Shift + Return。
3. 以下一個呼叫堆疊更新對應
執行應用程式到下一個中斷點或逐步執行函式。 對應加入新的呼叫堆疊。
4. 將相關程式碼加入至對應
現在您已取得地圖,下一步做什麼? 如果您使用 Visual C# .NET 或 Visual Basic .NET,請加入項目 (例如欄位、屬性及其他方法) 以追蹤程式碼中發生的情況。
按兩下方法以查看其程式碼定義。(鍵盤:選取地圖上的方法並按下 F12)
加入您要在對應上追蹤的項目。
您可以在這裡輕鬆查看哪些方法使用相同的欄位。 新加入的項目會以綠色顯示。
繼續建置對應來查看更多程式碼。
5. 使用地圖尋找錯誤 (bug)。
視覺化程式碼可協助您更快速找到 Bug。 例如,假設您正在調查繪圖程式中的錯誤 (bug)。 當您繪製線條和嘗試復原時,不會發生任何動作,直到您繪製另一個線條。
因此您設定中斷點,開始偵錯,並建置對應如下:
您會注意到對應中的所有使用者筆勢呼叫 Repaint,除了 undo 之外。 這可能會解譯 undo 為何不會立即執行。
在修正錯誤並繼續執行程式之後,地圖會嘗試加入從 undo 到 Repaint 的新呼叫:
問與答
並非所有的呼叫會出現在地圖上。 為什麼?
根據預設,只有您的程式碼會出現在對應上。 若要查看外部程式碼,請於 [呼叫堆疊] 視窗中開啟它,或關閉 Visual Studio 偵錯選項上的 [啟用 Just My Code]。
變更對應是否會影響程式碼?
變更對應完全不會影響程式碼。 請儘管重新命名、移動,或移除地圖上的任何項目。
這個訊息是什麼意思:「圖表可能是根據舊版程式碼建立的」?
在您上次更新對應之後,程式碼可能已經變更。 例如,在地圖上的呼叫可能不再存在於程式碼。 關閉訊息,然後在重新更新對應之前,嘗試重建方案。
如何控制地圖的配置?
開啟位於對應工具列上的 [版面配置] 功能表:
變更預設配置。
若要停止自動重新整理對應,請關閉 [偵錯時自動配置]。
若要在加入項目時盡可能減少重新整理對應,請關閉 [累加配置]。
我是否可以和其他人共用對應?
您可以匯出對應,傳送給其他人 (如果您有 Microsoft Outlook),也可以將它儲存到方案中,以便將它簽入 Team Foundation 版本控制項。
如何讓地圖停止自動加入新的呼叫堆疊?
選擇地圖工具列上的 。 若要手動將目前呼叫堆疊加入至對應,請按下 Ctrl + Shift + `。
在偵錯時,對應會繼續反白顯示對應上現有的呼叫堆疊。
項目圖示和箭號是什麼意思?
若要取得有關項目的詳細資訊,請參閱項目的工具提示。 您也可以查看 [圖例] 了解每個圖示表示。
第一次認識 Code Map 由此進 - 快速理解一堆程式碼的方法 - 使用 Visual Studio 2013 的 Code Map 程式碼地圖
若想學習更多可觀看這影片 - 正確的團隊寫碼標準 - 兼顧開發效率及程式碼品質