1

概述: 我正在调试一个 C# GUI,它接收一个 XML 文件并启动一个新进程以对 XML 文件执行统计计算。由于某种原因,该过程在执行过程中退出,没有明显的错误。出现一个 Windows 消息框并显示“已停止工作,Windows 正在寻找解决方案”

我试过的:

  • 我尝试写入日志以跟踪应用程序的执行,以便查看失败的位置,但该进程似乎在程序中的不同点退出。
  • 我尝试使用 Visual Studios 调试器来跟踪程序执行,但类似地,
    进程在不同时间退出。

我想知道的:

  • 我可以尝试其他任何免费的调试器吗?
  • 我可以拨打任何电话来查看进程运行时的当前状态吗?
  • 谁能想到其他尝试?

任何帮助都会很棒。谢谢。

4

3 回答 3

6

Visual Studio 的调试器是有史以来最好的调试工具,你应该更专注于学习使用它而不是寻找其他任何东西。

要回答您的问题,请转到Debug>Exceptions(CTRL+D CTRL+E) 并勾选Thrown旁边的框Common Language Runtime Exceptions。这将导致调试器在抛出异常时中断,无论您是悄悄地吞下它还是完全忽略它。这应该有助于查明您的问题。

于 2011-06-23T14:21:48.007 回答
2

添加一些

Debugger.Break();

在代码中的战略点处强制您进入调试器的语句可能是解决此类问题的有用方法......

只是别忘了把它们拿出来!

于 2011-06-23T14:21:38.730 回答
1

You could register for the AppDomain.CurrentDomain UnhandledException event to see if catches your problem.

Adding something like this in your Program.cs file before the main form is shown:

AppDomain.CurrentDomain.UnhandledException += 
    new UnhandledExceptionEventHandler(UnhandledExceptionEventOccured);

private static void UnhandledExceptionEventOccured(
    object sender, UnhandledExceptionEventArgs e)
{
    Exception ex = e.ExceptionObject as Exception;
    if(ex != null)
    {
        MessageBox.Show(ex.StackTrace, ex.Message);
    }
}

Another option would be to run your application through WinDbg

于 2011-06-23T14:24:09.550 回答