分析msvcr80.dll中的应用程序故障,故障地址为0x00008aa0

时间:2009-10-27 22:59:33

标签: windows debugging visual-c++ dll crash

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

faulting module msvcr80.dll
version 8.0.50727.1433
fault address 0x00008aa0

我进行了Google搜索,发现许多其他应用程序崩溃的特定故障地址示例,但没有说明它的含义。

有没有办法找出msvcr80.dll在这个地址做了什么?

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

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

4 个答案:

答案 0 :(得分:1)

谷歌搜索自己,有人建议使用dependency walker找出你正在使用哪个模块直接依赖于msvcr80.dll - 因为你使用的是VS 2005.

这可能会让你知道从哪里开始隔离这个bug。

答案 1 :(得分:1)

地址此低通常表示空指针访问冲突。访问基址指针的成员访问的偏移量是8aa0。看起来像一个非常大的对象。我建议你在取消引用指向大数据类型对象的指针时添加null-asserts。

答案 2 :(得分:1)

Windows永远不会将任何内容映射到低于0x10000的地址,所以你肯定是AV'ing。

答案 3 :(得分:0)

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

在VS2005中你应该这样做:

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