2012-12-05 39 views
2

這種情況出現之前,我想知道是否有任何方式可以確定在代碼中執行主動運行窗體的位置?問題是當我繼承了一個我還沒完全熟悉的非常大的應用程序時,我已經通過VS.NET 2010運行了它。我可能會有一個特定的屏幕,然後去「如果我可以開始調試就好了當我做'x'「時。如何確定運行調試的WinForm應用程序中的哪個窗體,事件或方法

如果這個一個簡單的形式與一些按鈕,我甚至不打擾在這裏問;我不是那個新手。但是耗時的任務是當我在一個大型多項目解決方案中查看帶有拖放功能,右鍵單擊選項等的標籤式屏幕時,需要花費5-10分鐘時間來跟蹤放置斷點以進行調試的位置。

我想知道的是,如果有一種方法可以讓WinForms應用程序通過IDE運行並執行「某事」,告訴VS.NET下一個動作中斷代碼(顯然沒有斷點,因爲我不'不知道在哪裏放置一個)。這將爲我節省大量的時間,試圖以一種不那麼簡單的形式或一系列形式來追蹤哪個事件正在發生。

我希望這是有道理的...

謝謝!

回答

2

是的,這有些可能。當您使用Debug + Break All時,99.9%的可能性是您不會分解爲項目組成部分的代碼。 Winforms應用程序通常是空閒的,抽取消息循環並等待Windows告訴它發生了什麼。您將在Application.Run()語句中斷開。

然後使用Debug + Step Over的技巧。該程序恢復正常運行。然後給出一個UI命令(在你的問題中做'x'),調試器將在實際代碼的第一個語句中斷開,通常在該命令的事件處理程序的開始處。不完全保證該代碼將是相關的,例如,您可能會在MouseMove事件處理程序處中斷。所以YMMV。

+0

完美,這就是*正是我想要的!我的情況有一個警告。不要打破「Application.Run」,而是停止在每10秒運行一次的BackgroundWorker線程上。不幸的是,'Debug + Step Over'(F10)命令只會在* that *方法內停止,無論我做了什麼UI操作。解決方案:暫時停止後臺工作人員功能,然後您的步驟完全按照我的需要工作。在5秒鐘內鑽入一些'_DragEnter'事件,至少需要5分鐘才能追蹤到。 5分鐘+5分鐘+5分鐘,加起來! – atconway

+1

調試+ Windows +線程並雙擊主線程。 –

相關問題