2012-08-11 72 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资料时,会自动创建一个“完全转储”文件。

它也可以手动通过右键点击在任务管理器的进程做你的应用程序的一个“小场”,做创建转储文件。但是,手动执行操作意味着捕获接近异常时的状态要慢很多,并且“小型转储”也不如全面转储。

这里有一个很好的教程就如何诊断在生产环境中的问题: