【问题标题】:How do I find a source code position from an address given by a crash in Window CE如何从 Window CE 中的崩溃给出的地址中找到源代码位置
【发布时间】:2010-11-25 13:50:44
【问题描述】:

我有一个 Windows mobile 4.0 应用程序,使用带有 MFC 的 EVC++ 4.0 SP4 编写,该应用程序在现场表现出随机偶尔崩溃。例如异常 ox800000002 在 00112584。它不会在各种模拟器和模拟器下发生,因此很难使用调试器进行跟踪。崩溃抛出和地址和异常类型。鉴于我有 PDB,是否有任何方法可以将此地址跟踪到源。我无法使用 VC++ 8 重新编译,因为它不支持 mobile 4 SDK。

我的猜测是,如果没有堆栈跟踪,我不会有太多的乐趣,因为异常可能不在我的源代码中。同样值得一试。

编辑 正如建议的那样,我查看了程序 .MAP 文件上下文中的地址。这揭示了以下内容

 Address         Publics by Value              Rva+Base     Lib:Object

 0001:00000000       ?GetUnduValue@@YANMM@Z     00011000 f   7Par.obj
'
'
'
 0001:001124b8       ?OnLButtonUp@CGXGridUserDragSelectRangeImp@@UAAHPAVCGXGridCore@@AAVCPoint@@AAI@Z 001234b8 f   gxseldrg.obj
 0001:001126d8       ?OnSelDragStart@CGXGridUserDragSelectRangeImp@@UAAHPAVCGXGridCore@@KK@Z 001236d8 f   gxseldrg.obj

这表明在 CGXGridUserDragSelectRangeImp::OnLButtonUp() 期间发生了错误,这似乎有点奇怪,因为我认为当时没有按下鼠标/键盘/屏幕按钮。可能是在报告崩溃之前堆栈已经碎片化,我在浪费时间。我将使用汇编程序输出重新编译以尝试将其隔离到给定的行,但不要抱太大希望:(

地图文件是否报告分段地址,例如0001:xxxxxxxxx 和崩溃报告未分段地址意味着我必须进行一些计算才能从崩溃地址中获取地图地址?

【问题讨论】:

    标签: windows-mobile mfc evc4


    【解决方案1】:

    我能得到的最接近的是在 Visual Studio 8 上针对 Windows Mobile 6 重新编译,并在调试器下运行。这确实发生了一次此类崩溃,但并不理想。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-10-04
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 2011-02-22
      • 2012-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多