CE下如何实现错误报告功能?
如题,我最近写了个程序(Windows Mobile上的)在模拟器上测试无任何问题,可是一拿到真机上就偶尔会出错,出错的原因是访问了未对齐的数据,我代码检查了好多遍也没发现哪错了。
我使用如下方法能捕获到这个异常
__try
{
...
}
__except(HandleException(GetExceptionInformation()))
{
...
}
得到一个LPEXCEPTION_POINTERS结构,在这个结构里面能获得异常地址(ExceptionAddress)。
其实到问题已经可以解决了;比如 :*(LPBYTE)NULL=2,这句代码产生异常被捕获到,ExceptionAddress就是首先异常的代码地址,拿着这个地址到.map文件中就可以找到产生错误的代码。
但是如果int a=0; a/=a; 这样的除0异常被捕获到后ExceptionAddress的地址不是产生异常的地址,而是跑到了coredll.dll里面去了。
我试过用CaptureDumpFileOnDevice首先dump文件,这个函数在真机上测试老失败,不用它也罢。我只是想在产生异常时得到异常的地址,使之可以在.map文件中找到产生错误的函数就行,然后我可以仔细慢慢检查那个函数就行了。如果实在得不到准确的产生错误的地址能得到异常时的函数调用堆栈也行。
求各位大哥大姐们帮帮我吧,这个问题困扰我好几天了!!!
我使用如下方法能捕获到这个异常
__try
{
...
}
__except(HandleException(GetExceptionInformation()))
{
...
}
得到一个LPEXCEPTION_POINTERS结构,在这个结构里面能获得异常地址(ExceptionAddress)。
其实到问题已经可以解决了;比如 :*(LPBYTE)NULL=2,这句代码产生异常被捕获到,ExceptionAddress就是首先异常的代码地址,拿着这个地址到.map文件中就可以找到产生错误的代码。
但是如果int a=0; a/=a; 这样的除0异常被捕获到后ExceptionAddress的地址不是产生异常的地址,而是跑到了coredll.dll里面去了。
我试过用CaptureDumpFileOnDevice首先dump文件,这个函数在真机上测试老失败,不用它也罢。我只是想在产生异常时得到异常的地址,使之可以在.map文件中找到产生错误的函数就行,然后我可以仔细慢慢检查那个函数就行了。如果实在得不到准确的产生错误的地址能得到异常时的函数调用堆栈也行。
求各位大哥大姐们帮帮我吧,这个问题困扰我好几天了!!!
...全文
相关推荐
Windows CE实现自动同步时间功能
在`Windows CE实现自动同步时间功能.docx`文档中,可能详细地介绍了上述步骤,并给出了具体的代码示例和注意事项。
手把手教你学PCIE(2.1.7)--pcie基本概念:PCI Express (PCIe) 的错误报告和处理机制
PCIe 的错误报告和处理机制是确保系统可靠性和稳定性的关键部分。通过多种错误类型、报告机制和处理机制,PCIe 可以及时检测、报告和处理各种类型的错误。理解这些机制对于开发和调试 PCIe 系统非常重要。希望这个介绍能帮助你更好地理解和使用 PCIe 的错误报告和处理机制。
CE6800和CE12800的安装包
通过正确应用这些知识,用户能够确保在网络模拟环境中实现设备的顺畅运行,从而更有效地学习和测试网络技术。
C# 编写的简单计算器,ce功能未实现
这个计算器虽然已经实现了基本的计算功能,但遗憾的是,"CE"(清除错误)功能尚未被集成到设计中。在这个简短的分析中,我们将深入探讨C#的基础知识、计算器程序的核心概念以及如何添加缺失的CE功能。
【CE教程二】利用CE实现FPS类游戏无后坐
【CE教程二】利用CE实现FPS类游戏无后坐【CE教程二】利用CE实现FPS类游戏无后坐


