要捕获在VS 2010中的输出窗口中写入的消息,尝试拦截导致错误的消息。
我试图拦截的消息:
A first chance exception of type 'System.Runtime.InteropServices.SEHException' occurred in OpenNETCF.Desktop.Communication.dll
Disconnect
之后,当我连接设备时,应用程序冻结,毫无例外。
我如何捕获输出窗口消息或将它们重定向到字符串?当我在生产模式下使用这个应用程序时,我可以拦截吗?
我试图捕获控制台消息,但我从应用程序调用的console.writeline没有任何区别,所以我认为这些消息不是console.writeline调用。
答案 0 :(得分:0)
如果您正在调试应用程序然后在首次引发特定异常(第一次机会异常/抛出)时让调试器中断,您可以只勾选所需的特定异常,而不是运行时中的整组异常。 InteropServices。
请参见下面的屏幕截图:
如果您的应用程序当前未在调试器中运行,那么您可以通过使用“附加到进程”来获取调试器以附加到已在运行的进程...但是,通常不会在生产环境。
如果要在生产环境中分析应用程序,即无法停止应用程序或在调试器中运行它...那么最好的方法是在发生异常时创建“转储”进程...然后你可以通过加载保存的.dmp文件在WinDBG或Visual Studio中离线分析。
设置的最佳方法是使用DebugDiag在发生异常时自动创建“完全转储”文件。
通过右键单击任务管理器中的进程并执行创建转储文件,也可以手动执行应用程序进程的“小型转储”。但是,手动操作意味着您在捕获接近异常时间的状态时要慢得多,并且“小型转储”不如完全转储有用。
这里有一个关于如何诊断生产环境中的问题的好教程: