在Windows Mobile设备上进行调试时,如何停止Visual C#2005崩溃?

我试图在使用Visual Studio 2005的Windows Mobile 6设备上调试.NET Compact框架C#应用程序。如果执行达到我以前设置的断点,则10次中有9次崩溃。 如果它不是第一次崩溃,即使通过应用程序的多次执行,该断点也将继续正常工作。


我在地址0x00000000015fab774处得到一个异常代码0xC0000005(STATUS_ACCESS_VIOLATION)。

这是一个本地例外。 在托管应用程序中,这通常是由您的某个P / Invokes或WindowsCE自定义版本中的缺陷导致的。

一段时间后,我对某些打印机代码有同样的问题。 本地异常仅在连接的调试期间发生,然后不是所有的时间,而是有时在所有的时间。 :d。 它从未在生产中发生过。
实际的问题是C ++的一个坏处,它得到了一个字符串(以及指向字符串的指针),然后吞噬了接下来的1024个字节。 问题是,有时它不应该访问这些字节中的一部分! 我想这是在调试过程中发生的,因为使用了更多的内存或者一些好奇的内存对齐方案。
我们通过将字符串的长度传递给C ++调用来解决该问题,因此它不必盲目地采用下一个1024。

值得注意的是,还有更多的可能性导致0xC0000005。 一些非常有帮助的人在这里添加了一些可能性。

如果您无权访问任何较低级别的代码,我建议将此问题与提供操作系统映像的人员(通常是制造商)以及您所使用的任何低级别组件的提供者一起解决。 这个问题很难解决,所以我不希望自己修复,特别是如果制造商是Symbol,Intermec或Datalogic(前者有狗屎支持,后者只是解雇了大部分开发者)。


重新安装Visual Studio 2005的Service Pack 1后,此问题似乎已得到解决

链接地址: http://www.djcxy.com/p/53649.html

上一篇: How do I stop Visual C# 2005 crashing when debugging on a windows mobile device?

下一篇: Programmatically create MS SQL Compact database file on a desktop