当前位置: 代码迷 >> WinCE >> 怎么调试驱动错误
  详细解决方案

怎么调试驱动错误

热度:151   发布时间:2016-04-28 13:47:53.0
如何调试驱动异常?
我把4.2BSP的串口驱动移植到2440 5.0BSP上,但是在加载的过程中出现异常,请问如何调试和定位异常呢?请大家指点,谢谢。

系统启动阶段出现如下信息。
Data Abort: Thread=988c525c Proc=81d36340 'device.exe'
AKY=00000005 PC=03d723bc(ceddk.dll+0x000023bc) RA=01e640f4(ser2440.dll+0x000040f4) BVA=06000001 FSR=00000007
RaiseException: Thread=988c525c Proc=81d36340 'device.exe'
AKY=00000005 PC=03f8dfec(coredll.dll+0x0001dfec) RA=802135e8(NK.EXE+0x000135e8) BVA=00000001 FSR=00000001
Data Abort: Thread=988c525c Proc=81d36340 'device.exe'
AKY=00000005 PC=03d723bc(ceddk.dll+0x000023bc) RA=01e640f4(ser2440.dll+0x000040f4) BVA=06000001 FSR=00000007
RaiseException: Thread=988c525c Proc=81d36340 'device.exe'
AKY=00000005 PC=03f8dfec(coredll.dll+0x0001dfec) RA=802135e8(NK.EXE+0x000135e8) BVA=00000001 FSR=00000001

------解决方案--------------------
这个问题难说了 哎
------解决方案--------------------
try catch捕获不到么?
用Map相关的东西定位一下
------解决方案--------------------
_try
{
//你要跑的code
}
 _except (GetExceptionCode() == STATUS_ACCESS_VIOLATION ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
{
RETAILMSG(1, (TEXT("EXCEPTION IN COM_写你问题的地方l!!!!\r\n")));
SetLastError(E_FAIL);
}
做下异常处理
------解决方案--------------------
看MAP文件了,PC=03d723bc(ceddk.dll+0x000023bc)表示错误在这个地方,看这个地方是什么系统函数,一般是你把系统函数用错了。因为MS提供的东西一般没有问题的
------解决方案--------------------
看我的博客文章:
http://blog.csdn.net/singlerace/archive/2008/07/15/2655154.aspx
------解决方案--------------------
可以使用Passive KITL,正常使用机器发现当机再联usb,直接定位到出现异常的代码处。
------解决方案--------------------
探讨
引用:
可以使用Passive KITL,正常使用机器发现当机再联usb,直接定位到出现异常的代码处。


正常使用机器发现当机再联usb???这个是什么意思?

KITL是可以帮助解决一些问题。我想通过看上面的一些信息,查看配置文件来调试,每次都KITL,太浪费时间了。

------解决方案--------------------
探讨
奇怪这个RA是程序返回的地址,在wince下应该是虚拟地址0x80000000以上才对啊,怎么会是01e640f4的?
AKY=00000005 PC=03d723bc(ceddk.dll+0x000023bc) RA=01e640f4(ser2440.dll+0x000040f4) BVA=06000001 FSR=00000007

------解决方案--------------------
在PC=03d723bc(ceddk.dll+0x000023bc)这个地方====BASE ADDRESS OF ceddk.dll+0x000023bc。PC指针指到了这个地方,就是这个地方有问题
  相关解决方案