我正在调试一个间歇性问题,其中一个应用程序(在Visual Studio 2005中使用C ++创建)是错误的。事件日志提供以下信息:
faulting module msvcr80.dll
version 8.0.50727.1433
fault address 0x00008aa0
我进行了Google搜索,发现许多其他应用程序崩溃的特定故障地址示例,但没有说明它的含义。
有没有办法找出msvcr80.dll在这个地址做了什么?
我尝试从Visual Studio附加到正在运行的应用程序实例,以查看代码位于0x00008aa0 - 但似乎没有任何代码!
更一般地说,给定一个Windows DLL中的某个地址,有没有办法弄清楚代码在做什么?
答案 0 :(得分:1)
谷歌搜索自己,有人建议使用dependency walker找出你正在使用哪个模块直接依赖于msvcr80.dll - 因为你使用的是VS 2005.
这可能会让你知道从哪里开始隔离这个bug。
答案 1 :(得分:1)
地址此低通常表示空指针访问冲突。访问基址指针的成员访问的偏移量是8aa0。看起来像一个非常大的对象。我建议你在取消引用指向大数据类型对象的指针时添加null-asserts。
答案 2 :(得分:1)
Windows永远不会将任何内容映射到低于0x10000的地址,所以你肯定是AV'ing。
答案 3 :(得分:0)
您可以尝试使用Microsoft调试符号,在这种情况下,您将看到正常的函数名称而不是地址。
在VS2005中你应该这样做: