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

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

faulting module msvcr80.dll version 8.0.50727.1433 fault address 0x00008aa0 

我做了一个谷歌search,发现许多其他应用程序崩溃的这个特定的故障地址的例子,但没有说明它是什么意思。

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

我尝试从Visual Studio附加到应用程序的运行实例,看看哪些代码位于0x00008aa0 – 但似乎没有任何东西!

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

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

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

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

解决这个低点通常表示空指针访问冲突。 访问基址指针的成员访问的偏移量是8aa0。 看起来像一个很大的对象。 我建议你在取消引用大数据类型对象的指针时添加空断言。

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

在VS2005中你应该这样做:

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