2

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

我已经 pinvoked MiniDumpWriteDump() 并且对于创建我可以在事后调试的 .dmp 文件非常有效。

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

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

这很好用,但是我没有得到所需的调用堆栈。我真的更喜欢在抛出异常的地方拥有调用堆栈(带有所有成员变量)。

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

4

2 回答 2

2

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

于 2012-09-07T23:40:22.173 回答
2

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

于 2012-09-07T23:42:24.410 回答