【问题标题】:in C# can I have code execute when an exception is thrown?在 C# 中,我可以在抛出异常时执行代码吗?
【发布时间】:2012-09-08 07:51:31
【问题描述】:

我遇到了一个我很难跟踪的错误。这是仅在调试器未连接时发生的情况之一:)

我已经调用了 MiniDumpWriteDump(),它非常适合创建我可以在事后调试的 .dmp 文件。

但是,我正在做类似的事情

try
{
    foo();
}
catch(Exception)
{
    CreateMiniDump()
}

这很好用,但是我没有得到所需的调用堆栈。我真的更希望在引发异常的地方拥有调用堆栈(包含所有成员变量)。

这可能吗?是否有一种机制可以在异常中获得第一批?这样我就可以创建一个小型转储并保留调用堆栈等?

【问题讨论】:

标签: c# winapi crash-reports crash-dumps


【解决方案1】:

在 .NET 4 及更高版本中,您可以订阅 FirstChanceException 事件。

【讨论】:

    【解决方案2】:

    您可以订阅AppDomain.CurrentDomain.UnhandledException 以获取在异常即将解除时引发的事件。当它被提升时,原始上下文仍在堆栈中。您可以将您的 minidump 创建代码放在事件处理程序中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-28
      • 2012-03-14
      • 2014-12-06
      • 1970-01-01
      • 2012-03-30
      • 1970-01-01
      • 2014-02-14
      相关资源
      最近更新 更多