我们有一个非托管C++应用程序(MFC框架,Windows CE),它关闭我们在看似随机的时刻。
我推测一定发生了什么不好的事情,C运行时或操作系统决定终止程序。但我不知道在哪里继续搜索。
问:是否可以在windowsce中看到某个地方
申请一开始就终止了?
在普通的x86个人电脑上,会出现调试器、应用程序验证程序、Windows错误报告工具、WinDbg等,但是如何(开始)分析windowsce应用程序崩溃呢?
到目前为止我试过的:
-
在应用程序中的战术位置创建全局C++异常处理程序。它们构建并传输一个简单的UDP包,其中包含最少的异常信息。然后在另一台运行Wireshark的机器上查看这些内容。
-
添加SEH exception编译器开关(
/EHa
,甚至能够捕获那些非C++异常,比如访问冲突等。
-
MSVS说,通过TCP/IP连接visualstudio2008调试器与智能设备(成功连接到智能设备),但是调试器没有看到任何远程进程。这个
Attach to process
VS窗口出现以下错误:
Unable to Connect to ''
.)
-
重新确定应用程序的目标,使其在普通x86 PC上运行(但运行正常,因此也没有“奢侈”的调试问题)
我已经通过强制访问冲突测试了异常处理程序。
预期的UDP消息到达运行Wireshark的计算机。但当真正的问题发生时,它完全保持沉默。
平台:MS Windows Embedded Compact 7.02,运行在德州仪器处理器(ARM A8)上。
应用程序本身实现了一个基本的VNC查看器。它使用套接字并依赖于第三方二进制文件zlib CE(
ZLIBCE.DLL
)用于解压缩VNC数据。
还没有验证zlib二进制文件是否是根据完全相同的编译器(和/或编译器设置)构建的。