2012-08-11 73 views
0

捕獲VS 2010中寫入輸出窗口的消息,嘗試攔截導致錯誤的消息。捕獲VS 2010中的輸出窗口消息

,我試圖攔截消息:

A first chance exception of type 'System.Runtime.InteropServices.SEHException' occurred in OpenNETCF.Desktop.Communication.dll 
Disconnect 

當我連接設備的應用程序凍結,沒有例外。

我怎麼能捕獲輸出窗口消息或重定向到一個字符串?我可以攔截何時在生產模式下使用此應用程序?

我試圖捕捉到控制檯消息,但我沒有什麼除了應用程序稱爲Console.WriteLine命令,所以我認爲這些消息是不console.writeline電話。

+0

'{嘗試做的工作}趕上(例外){字符串outputMessage = ex.toString; }' – SpYk3HH 2012-08-11 14:25:26

+0

我曾嘗試在關鍵部分嘗試捕捉,但它仍然frezzes的消息後,我做了一個編輯和添加消息 – geogeek 2012-08-11 14:32:16

+0

在VS 2010中,調試 - >例外,檢查適用的方格,看看你可以讓應用程序在拋出異常時實際停止。 – Les 2012-08-11 14:40:41

回答

0

如果您正在調試的應用程序,然後讓調試器打破,當一個特定的異常被首次提出(第一次機會異常/拋出),你可以勾選,而不是在運行整套例外的只是你想要的特定例外, .InteropServices。

請參見下面的屏幕截圖:

enter image description here

如果您的應用程序當前沒有在調試器中運行,那麼你可以得到一個調試器附加到已經運行的進程......通過使用「附加到流程「......但是,這通常不是在生產環境中完成的。

如果要分析在生產環境中您的應用程序,即你不能阻止你的應用程序或在調試器中運行...然後做到這一點的最好辦法是,當出現異常時得到一個「傾銷」通過加載已保存的.dmp文件,您可以在WinDBG或Visual Studio中脫機分析。

來設置的東西,最好的辦法是這樣,當異常使用DebugDiag資料時,會自動創建一個「完全轉儲」文件。

它也可以手動通過右鍵點擊在任務管理器的進程做你的應用程序的一個「小場」,做創建轉儲文件。但是,手動執行操作意味着捕獲接近異常時的狀態要慢很多,並且「小型轉儲」也不如全面轉儲。

這裏有一個很好的教程就如何診斷在生產環境中的問題: