【发布时间】:2015-12-21 15:28:05
【问题描述】:
我们有一个使用 Compact Framework 3.5 的 C# 应用程序,在运行 Windows CE 5.0 和 Windows Mobile 的“移动计算机”上运行。
该应用程序在这些设备上运行良好,包括 Motorola/Symbol MC3190,运行 Windows CE 5.0。
现在,此 MC3190 已报废,由 Motorola/Symbol MC3200(也称为 MC32N0)取代。该设备运行 Windows CE 7.0 并预装了 Compact Framework 3.5。
我们的应用程序在此设备上间歇性且神秘地崩溃。
通过在我们的应用程序中打开和关闭许多表单,我可以在某种程度上一致地重现该问题。这些操作不会导致任何网络流量。有时我会在 30 秒内崩溃,有时需要 10 分钟的随机操作。
在某些时候,应用程序将完全冻结。按下 Windows CE 开始按钮将在冻结的应用程序上绘制开始菜单,但再次按下它不会隐藏开始菜单。
工具包中似乎存在某种无限循环,但我不知道它是什么。这是我尝试过的事情的清单:
我对源库进行了许多更改(主要更改了表单的显示和处理方式)
我尝试在连接到 VS 调试器时使应用程序崩溃,然后“全部中断”,但这只会停止,直到我硬重启设备。
-
我尝试使用 .NET Compact Framework 远程性能监视器,它显示了有关垃圾收集等的有趣数字,但没有内存泄漏,也没有任何信息可以帮助我查明冻结。
李> 我尝试使用“CLR Profiler”,但在我的设备上出现了错误消息“连接时出现未知错误:RemoteInstall:不支持的指令集”。
-
我曾尝试联系摩托罗拉支持,甚至将我的源代码发送给他们,但他们只是要求知道“哪个 API 导致了崩溃”(我希望他们能告诉我)
问题:
有没有人在 MC32N0 上运行的 CF 应用程序上看到类似的崩溃?
有人在 MC32N0 上使用 CLR Profiler 吗?
有谁知道如何在冻结的 CF 应用程序上获得一种线程转储? (有点像 JVM 的 jstack)
有没有人知道如何调试这个?
非常感谢任何帮助!
更新
设备在我身上发生了几次崩溃,并出现了视觉崩溃现象,如下所示:
http://i.stack.imgur.com/HAxt8.jpg
崩溃症状通常如下所示:
- 快乐使用应用程序,世界各地无忧拣货
- 突然间,应用程序不再处理键盘输入
- 有趣的是,在这一点上,我通常能够聚焦不同的 TextBox,并且光标会在那里闪烁一会儿
- 再进行几次交互后,系统完全锁定,Windows 开始按钮也无响应
- 几次 - 我见过的大约 100 次崩溃中的 3 次 - 设备会产生如上图所示的崩溃模式
注意:我们的供应商交付了两台 MC3200 设备,它们都产生了崩溃,所以我很难相信这是硬件问题。
有人认识这些“症状”吗?有什么想法吗?
【问题讨论】:
-
不幸的是(对我而言),我不得不使用这个充满炸弹的框架工作了几年;不幸的是(对你来说),《公主新娘》的一句话在这里适用:“习惯于失望。”
标签: c# .net compact-framework windows-ce