【问题标题】:How to find Data Abort exception function/instruction from source code?如何从源代码中找到数据中止异常函数/指令?
【发布时间】:2017-08-18 09:56:17
【问题描述】:

我正在设备上运行应用程序,该设备可以通过串行 USB 接口连接外部附件。我注意到,从 USB 端口拔下配件时,设备挂起。串行日志显示抛出了 Data Abort 异常:

[错误] PID:00400003 TID:0250001A 异常“数据中止”(0x4):线程 ID=0250001a(pth=bd8d2660),Proc-Id=00400002(pprc=8534a5e0)“NK.EXE”,VM- active=046b0082(pprc=bd895298) 'Osl_Spec.exe'

[错误] PID:00400003 TID:0250001A PC=8042f520(kernel.dll+0x00014520) RA=cb33fdf0(???+0xcb33fdf0) SP=dcfffae8, BVA=​​00000014

[错误] PID:00400003 TID:0250001A 异常“引发异常”(0x116):线程 ID=0250001a(pth=bd8d2660),Proc-Id=00400002(pprc=8534a5e0)“NK.EXE”,VM- active=046b0082(pprc=bd895298) 'Osl_Spec.exe'

[错误] PID:00400003 TID:0250001A PC=eff0e4d8(k.coredll.dll+0x0001e4d8) RA=80429648(kernel.dll+0x0000e648) SP=dcfff1fc, BVA=​​ffffffff

[错误] PID:00400003 TID:0250001A 异常“数据中止”(0x4):线程 ID=0250001a(pth=bd8d2660),Proc-Id=00400002(pprc=8534a5e0)“NK.EXE”,VM- active=046b0082(pprc=bd895298) 'Osl_Spec.exe'

[错误] PID:00400003 TID:0250001A PC=8042f520(kernel.dll+0x00014520) RA=cb33fdf0(???+0xcb33fdf0) SP=dcfffad4, BVA=​​00000014

[错误] PID:00400003 TID:0250001A 异常'引发异常' (0x116): 线程 ID=0250001a(pth=bd8d2660), Proc-Id=00400002(pprc=8534a5e0) 'NK.EXE', VM- active=046b0082(pprc=bd895298) 'Osl_Spec.exe'

[错误] PID:00400003 TID:0250001A PC=eff0e4d8(k.coredll.dll+0x0001e4d8) RA=80429648(kernel.dll+0x0000e648) SP=dcfff1e8, BVA=​​ffffffff

我想了解导致这些异常的源代码部分。我已经阅读了几篇文章,这些文章建议使用 RA(返回地址)旁边显示的驱动程序文件的 MAP 文件,但在我的错误中我看到“???”而不是驱动程序文件名。 OSL_SPEC.exe 是我的应用程序。请建议我如何在代码中找到问题的根源。

【问题讨论】:

    标签: c++ windows visual-studio windows-ce msdn


    【解决方案1】:

    有多种方法可以做到这一点,但首先您需要使用调试标志编译您的文件。 如果您已经这样做了,并且您的错误是可重现的,那么您可以在代码中使用停止点在调试模式下运行文件(在 Linux 上,您可以使用 gdb 来执行此操作,在 Windows 上可能存在这种工具)。 如果您的错误是不可重现的,您应该找到一种方法来在主函数中捕获异常并返回调用堆栈。然后在windows上使用addr2line的副本来查找导致异常的函数。

    我注意到您的日志中提到了kernel.dllk.coredll.dll。这些文件是您的项目(作为 lib)还是您的 VM 的一部分? 如果它们是您项目的一部分,您应该注意这些文件(+地址偏移)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2020-01-31
      • 2012-03-06
      • 2021-09-28
      • 2019-10-14
      • 2016-01-21
      相关资源
      最近更新 更多