Kev*_*vin 3 compact-framework windows-mobile access-violation
我有一个大型Compact Frameworks V2.0应用程序,在大多数情况下工作得很好.在某些设备上大约每天一次,用户会收到未被标准托管的Try/Catch块捕获的本机错误0xC0000005.
我的应用程序通过ASMX调用以固定间隔与服务器同步.问题似乎发生在同步过程中.除了在同步时发生的ASMX调用之外,还有相当多的业务逻辑,但其中98%是托管代码.我已经回顾了我的所有P/Invokes和应用程序本机C++库,此时我大约95%确定不是问题所在.
由于这只发生在某些设备上并且很少发生(每天不到一次),因此很难隔离.我已经对我的代码进行了解释,看起来好像它发生在应用程序中的随机位置,所以我怀疑某些东西正在破坏内存.
任何关于如何进一步解决这个问题的想法将不胜感激.
0xC0000005是一种访问冲突,因此有些东西试图读取或写入它无权访问的地址.这些往往很难找到,而且经验是最好的工具之一(而Platform Builder的调试器也非常有用,但这是一个完全独立的调试途径,需要你可能没有的经验,或者你已经拥有过的经验尝试过).我发现记录往往不如减法编码有用 - 尽可能使用模拟托管调用删除P/invoke调用.
托管应用中的访问冲突通常是由于以下原因之一而发生的:
你会注意到这里的趋势,几乎所有这些都是P/Invokes,这不是偶然的.获取托管代码是非常困难的.
归档时间: |
|
查看次数: |
1351 次 |
最近记录: |