Dot-Net

如何排查和調試 Visual Studio 設計模式錯誤?

  • October 22, 2015

使用 Windows 7 和 Visual Studio 2010,我正在編寫一個 C# 自定義使用者控制項。我在程式碼視圖中編碼了數週,最近當我嘗試切換到設計模式時,Visual Studio 掛起,“沒有響應”。我可以等一個小時,仍然沒有任何反應。點擊關閉按鈕會顯示“您要等待、關閉、重新啟動並向 Microsoft 發送資訊”對話框。

有沒有辦法(堆棧)跟踪設計者試圖執行的程式碼?也許是設計時跟踪消息或斷點?

對於 Visual Studio 2010/2013

您可以調試 Visual Studio 設計器本身!打開 Visual Studio 的第二個實例,使用Tools -> Attach To Process並附加到第一個 Visual Studio(即devenv.exe)。

在 Visual Studio 實例 #2 (您在其中執行附加到程序的實例)中:在使用者控制項的建構子上放置一個斷點

在 Visual Studio 實例#1 中(原來的實例會卡住):打開你的使用者控制項所在的設計器,VS#2 中的斷點將被命中。

對於 Visual Studio 2012

您要調試的過程是XDesProc.exe- 請參閱ABT 博士的回答。否則,該過程與 Visual Studio 2010/2013 相同。

對於 Visual Studio 2010,這個答案就可以了

對於 Visual Studio 2012 或更高版本,您需要做的實際上是調試 Visual Studio Designer 程序。您要調試的程序稱為 XDesProc.exe

在此處輸入圖像描述.

我執行以下操作:

  • 打開兩個指向同一個解決方案的 Visual Studio 實例
  • 關閉兩者中的所有視窗。
  • 殺死任務管理器中的所有 XDesProc.exe 實例
  • 在 Visual Studio 實例 A 中,打開任何視圖(不是有異常的視圖)。這將啟動 Visual Studio 實例 A 的 XDesProc 設計器程序
  • 在 Visual Studio 實例 B 中,附加到 XDesProc.exe 上的程序並設置斷點,或者設置 Break on exceptions
  • 在 Visual Studio 實例 A 中,打開視圖(有異常)
  • Visual Studio B 應該會中斷。

在此處輸入圖像描述

如果您錯過了它,或者需要重新啟動這些步驟,請從第 (2) 步“關閉所有視窗”重新開始,殺死 XDesProc 實例。有時設計器啟動一次並記憶體值,您需要有一個乾淨、無異常的設計器來跟踪問題。

引用自:https://stackoverflow.com/questions/13698388