我正在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中你应该这样做: