代码之家  ›  专栏  ›  技术社区  ›  russilwvong

分析msvcr80.dll中的应用程序错误,错误地址为0x0008AA0

  •  1
  • russilwvong  · 技术社区  · 16 年前

    我正在调试一个间歇性问题,其中应用程序(使用VisualStudio 2005中的C++创建)是错误的。事件日志提供以下信息:

    faulting module msvcr80.dll
    version 8.0.50727.1433
    fault address 0x00008aa0
    

    我做了一次谷歌搜索,发现了许多其他的应用程序崩溃的例子,这个特定的错误地址,但没有迹象表明它意味着什么。

    有没有办法知道msvcr80.dll在这个地址上做什么?

    我尝试从Visual Studio附加到正在运行的应用程序实例,以查看什么代码位于0x0008AA0——但似乎没有任何代码!

    更一般地说,给定Windows DLL中的某个地址,有没有办法弄清楚代码在做什么?

    4 回复  |  直到 16 年前
        1
  •  1
  •   Ana Betts    16 年前

    Windows将永远不会将任何内容映射到低于0x1000的地址,因此您肯定是在访问。

        2
  •  1
  •   csl    16 年前

    我自己在谷歌搜索,有人建议使用 dependency walker 要找出您使用的模块直接依赖于msvcr80.dll,因为您使用的是vs 2005。

    这可能会给你一个线索,从哪里开始隔离这个bug。

        3
  •  1
  •   Sheng Jiang 蒋晟    16 年前

    地址低通常表示空指针访问冲突。访问基指针的成员访问的偏移量为8AA0。看起来像一个很大的物体。我建议您在取消引用指向大数据类型对象的指针时添加空断言。

        4
  •  0
  •   Eugene    16 年前

    您可以尝试使用Microsoft调试符号,在这种情况下,您将看到正常的函数名而不是地址。

    在VS2005中,您应该这样做:

    1. 转到“工具”->“选项”->“调试”->“符号”
    2. 插入 http://msdl.microsoft.com/download/symbols 作为符号位置
    3. 将vs附加到应用程序实例并重复崩溃