xxx.exe中0x782260ec的第一次机会异常:0xC0000005:访问冲突

时间:2011-11-08 14:49:22

标签: c# windows-mobile compact-framework crash-dumps minidump

我的应用程序在一段时间后崩溃,但我找不到任何模式。我能够把手放在碰撞堆上。应用程序在Windows Mobile 6.5上运行。它是用C#编写的。它使用Imaging API,PInvoks和许多线程。

当我使用Visual Studio 2008调试该转储时,在输出中显示“xxx.exe中0x782260ec的第一次机会异常:0xC0000005:访问冲突”

Call Stack显示2个条目。但我无法匹配其中任何一个来从我的代码中调用。

windbg.exe表示“netcfagl3_5.dll”

中发生此错误

是否有一些特殊技术可以从Windows Mobile分析转储文件?

3 个答案:

答案 0 :(得分:1)

'第一次机会异常'通常表示由用户代码处理的异常。如果您正在使用Vosual Studio&用于调试的Windows Mobile模拟器然后您可以关闭异常处理。转到Debug>例外并检查Win32 Exceptions的“Thrown”列。然后运行该程序并尝试让它重新出现。

当调试运行时,它将停止执行并在遇到“第一次机会异常”时中断调试器,允许您查看导致该错误的原因,并查看它是否与之相关。

'netcfagl3_5.dll'库是.NET CF的一部分,而不是您的代码,这就是您无法匹配调试符号的原因。

答案 1 :(得分:1)

0xC0000005: Access violation表示您的某个p / invokes不正确。该调用试图写入一个它无法访问的内存区域(如果定义不正确,这是典型的)。

您的转储也应该包含堆栈跟踪吗?

答案 2 :(得分:0)

您需要下载windbg,Visual Studio 2008不会进行Post Mortem .NET调试。

如果您的开发计算机是64位,请参阅“How to use Windbg to debug a dump of a 32bit .NET app running on a x64 machine

否则,请参阅Post Mortem Debug under Windows Mobile with WinDbg。也可以在“Windows Mobile Post Mortem Debug”上进行搜索。

最好(迄今为止)最简单的方法是在调试器上运行时重现此问题。验证.net调试并不容易。

-PaulH