0

在 VS 2010 的输出窗口中捕获写入的消息,尝试拦截导致错误的消息。

我试图拦截的消息:

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

之后,当我连接设备时,应用程序冻结,无一例外。

我如何捕获输出窗口消息或将它们重定向到字符串?我可以拦截我什么时候在生产模式下使用这个应用程序?

我试图捕获控制台消息,但除了从应用程序调用的 console.writeline 之外,我什么也没得到,所以我认为这些消息不是 console.writeline 调用。

4

1 回答 1

0

如果您正在调试应用程序,那么为了让调试器在首次引发特定异常(第一次机会异常/抛出)时中断,您可以只勾选您想要的特定异常,而不是 Runtime.InteropServices 中的整个异常集。

请看下面的屏幕截图:

在此处输入图像描述

如果您的应用程序当前没有在调试器中运行,那么您可以让调试器附加到已经运行的进程......通过使用“附加到进程”......但是,这通常不会在生产环境中完成。

如果您想在生产环境中分析您的应用程序,即您无法停止您的应用程序或在调试器中运行它......那么最好的方法是在发生异常时创建进程的“转储” ...然后您可以通过加载保存的 .dmp 文件在 WinDBG 或 Visual Studio 中进行离线分析。

最好的设置方法是使用 DebugDiag 在发生异常时自动创建“完整转储”文件。

也可以通过右键单击任务管理器中的进程并创建转储文件来手动执行应用程序进程的“小型转储”。但是,手动执行意味着您在捕获接近异常时的状态时要慢得多,而且“小型转储”不如完整转储有用。

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

于 2012-08-11T19:19:28.103 回答