Post-Windows Embedded Compact (Windows CE) 程序的剖析

Post-mortem analysis of Windows Embedded Compact (Windows CE) program

我们有一个非托管的 C++ 应用程序(MFC 框架,Windows CE)在看似随机的时刻关闭我们。

没有错误消息,也没有 C++ 异常,它就消失了。

我猜一定是发生了什么不好的事情,C 运行-time 或 OS 决定终止程序。但我不确定在哪里继续搜索。

问题:是否可以在 Windows CE 中的某处看到 为什么 应用程序首先终止?

Windows CE 是否收集基本的崩溃信息?也许这样至少可以看出是访问冲突、内存不足情况、kernel/driver 恐慌还是某种其他类型的内部或外部事件迫使应用程序关闭?

在普通的 x86 PC 上,人们会使用调试器、应用程序验证器、Windows 错误报告工具、WinDbg 等。但是如何(开始)分析 Windows CE 应用程序崩溃?

到目前为止我尝试过的:

我已经通过强制访问冲突测试了异常处理程序。 预期的 UDP 消息完美地到达机器 运行ning Wireshark。但是当真正的问题发生时,它完全保持沉默。

平台:MS Windows Embedded Compact 7.02 运行ning 在 Texas Instruments 处理器 (ARM A8) 上。

应用程序本身实现了一个基本的 VNC 查看器。它使用套接字并依赖名为 zlib CE (ZLIBCE.DLL) 的第三方二进制文件来解压缩 VNC 数据。

尚未验证 zlib 二进制文件是否针对完全相同的编译器(and/or 编译器设置)构建。

解决了穷人的调试解决方案。现在将应用程序状态值发送到内存映射文件。这个想法是一个特制的帮助程序与主应用程序一起运行。该程序打开内存映射文件,显示从中读取的值。主程序写入它。如果主应用程序发生任何致命事故,辅助程序会获得最新的状态信息。由于它是共享内存,因此不会对性能产生太大影响。这样就找到了出错的程序段