我会从C#应用程序(Windows 7/vs2008)中获取随机崩溃,并且不会给我一个通常的堆栈跟踪,而是建议关闭/调试/查找信息Windows 7类型的对话框。我正在从VS2008或独立使用的情况下运行该应用程序 - 同一件事。单击“调试”建议使用VS的新实例进行调试,该实例失败了“另一个已连接到应用程序的调试器”。但是,附件的调试器并没有给我任何机会查看其失败的位置,只提供了输出窗口中的一些线索(下图)。如何处理?

看来我必须在VS调试器中启用(?)的第一个机会例外,但尚不清楚如何。.我感谢您对此有任何帮助!

补充 - 我找到了如何启用VS2008中的异常(debug-> exceptions->检查所有5个例外类别)。而且它仍然给我完全相同的结果 - 崩溃没有能力查看调试器中发生的事情。

'ps.exe'(托管):已加载'c: windows gased gac_msil system.deployment 2.0.0.0.0.0.0.b03f5f7f11d50a3a system.deployment.dll.dll'第一个机会发生在system.deployment.dll中,第一个机会'system.threading.threadabortexception'出现在mscorlib.dll中,线程0x1964已以代码0(0x0)退出。线程0x1b24已使用代码0(0x0)退出。 Mscorlib.dll中发生了第一个机会“系统。 Mscorlib.dll中发生的偶然偶然例外是“ system.argumentOutOfrangeException”。在mscorlib.dll中出现了类型的“系统。 Mscorlib.dll中发生了“ System.ArgumentOutOfrangeException”。 .threadabortexception'出现在mscorlib.dll中,线程0x19b8已使用代码0(0x0)退出。线程0x18F4已使用代码0(0x0)退出。线程0x420已使用代码0(0x0)退出。 Mscorlib.dll中发生了第一个机会“系统。 Mscorlib.dll中发生的偶然偶然例外是“ system.argumentOutOfrangeException”。在mscorlib.dll中出现了类型的“系统。 Mscorlib.dll中发生了“ System.ArgumentOutOfrangeException”。 utofrangeException'在mscorlib.dll中发生了第一个机会“系统”。发生在mscorlib.dll中,程序'[6084] ps.exe:托管'已以-1073740940(0xc0000374)退出。

有帮助吗?

解决方案

这就像在一级方程式比赛中见证了其中一个庞大的堆积。据报道,最后一块弹片:

// MessageText:
//
// A heap has been corrupted.
//
#define STATUS_HEAP_CORRUPTION           ((NTSTATUS)0xC0000374L)

是的,这是一个非常严重的轮胎爆破。当一堆损坏时,很多事情都出了问题。您可能有一些不受管理的代码,这些代码以一种不受管理的代码的典型方式行为,用不良的指针写作破坏了堆的完整性。很难诊断,隔离该代码。

其他提示

在VS中,转到调试 /异常,并激活“抛出”的复选框,以获取“通用语言运行时异常”。这将捕获“第一次偶然例外”。

部署异常似乎与单击一次有关。你在使用它吗?

如果开发工具使您失败,则创建输出日志文件或使用消息框对其进行跟踪。

Ctrl + Alt + E 在Visual Studio中或从菜单中选择DEBUG>异常,然后单击CLR异常以捕获所有第一个机会异常。然后,应该希望在争论时打破。

否则,请尝试写 Debug.WriteTrace.Write 代码中关键点处的语句以查看故障发生之前达到的点。调试和写作都可以在 System.Diagnostics 名称空间。

IMO最好调试堆的损坏是使用windbg。这是一个博客 邮政 从苔丝调试管理堆腐败。

Hth

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top