在Windows CE中使用自定义数据中止处理程序

时间:2012-09-14 11:51:52

标签: arm windows-ce

我们正在开发基于Windows CE的应用程序。目前,我们正在与许多数据中止异常作斗争,这些异常仅在发布版本中发生。我们只有有限数量的开发设备,它们实际上将调试流输出到串行端口。现在我们想知道是否可以使用OemDataAbortHandler来访问Exception的内容(即写入调试流的所有内容),以便收集数据用于诊断目的。 理想情况下,我们可以创建包含如下数据的文本文件:

    Exception 'Data Abort' (4): Thread-Id=05a70002(pth=8252169c),
 Proc-Id=03cf000e(pprc=824f3d70) 'XXXX.exe', VM-active=03cf000e(pprc=824f3d70) 'XXXX.exe'
    PC=400323cc(coredll.dll+0x000223cc) RA=4003361c(coredll.dll+0x0002361c) SP=0102f27c, 
BVA=6464646c

现在,OemDataAbortHandler的签名是:

void OEMDataAbortHandler(void);

有没有办法访问写入调试流的数据?

1 个答案:

答案 0 :(得分:0)

您应该能够使用结构化异常处理(__try / __except)来过滤数据中止异常。在CONTEXT内在函数的GetExceptionInformation参数中返回异常时的处理器状态。请参阅documentation for try/except