gpt4 book ai didi

c++ - windbg !analyze -v 输出中的 "BUGCHECK_STR: APPLICATION_FAULT_NULL_CLASS_PTR_READ_AFTER_CALL"是什么意思

转载 作者:行者123 更新时间:2023-11-30 04:20:49 25 4
gpt4 key购买 nike

我尝试使用 windbg 分析故障转储文件,并输入扩展命令以获得一些基本分析结果“!analyze -v”,得到的结果如下:-(我只在这里粘贴了部分信息)

....
ExceptionCode: c0000005 (Access violation)
ExceptionFlags: 00000000
NumberParameters: 2
Parameter[0]: 00000000
Parameter[1]: 00000004
Attempt to read from address 00000004

PROCESS_NAME: tscommand.exe

...

LAST_CONTROL_TRANSFER: from 010444c2 to 010181e6

FAULTING_THREAD: 00002270

BUGCHECK_STR: APPLICATION_FAULT_NULL_CLASS_PTR_READ_AFTER_CALL

PRIMARY_PROBLEM_CLASS: NULL_CLASS_PTR_READ_AFTER_CALL

DEFAULT_BUCKET_ID: NULL_CLASS_PTR_READ_AFTER_CALL

STACK_TEXT:

...

“BUGCHECK_STR: APPLICATION_FAULT_NULL_CLASS_PTR_READ_AFTER_CALL”在这里是什么意思?这是否意味着应用程序因调用函数后的 NULL 类指针而出错?我在网上搜索,找不到任何关于 APPLICATION_FAULT_NULL_CLASS_PTR_READ_AFTER_CALL 的信息。

最佳答案

“BUGCHECK_STR”是微软用来“分类”错误的一种分类,这个分类似乎表明你有一个 NULL 类指针——这对我来说似乎是正确的,因为内存读取是从地址 4 开始的,它距离 NULL 指针的基址有一个小的偏移量。

基本上,您遇到的情况是您正在使用指向某物的指针(我不是 100% 确定它是一个类),并且在您取消引用它时指针为 NULL。这完全有可能是由对成员函数的调用引起的,调试器可以 [通过查看调用堆栈、符号和寄存器值的组合] 来解决这个问题,但 WinDBG 获取这些东西并不是未知数有时会出错——这是启发式的,所以就像“如果我们在这里有这个值,那里有那个值,还有其他东西与这个范围相匹配,那么就是这组错误”。

如果您在崩溃时发布了更多的堆栈/寄存器值,则可能会更清楚地了解出了什么问题。

从错误代码和带有错误的额外数据的组合可以肯定的是,您的代码正在读取内存中的地址 4。这通常意味着尝试在“NULL”指向的类/结构中使用第二个整数或 float 。当我在代码中忘记了“if (ptr != NULL) ...”时,我已经看过好几次了。不时发生在我们大多数人身上......

关于c++ - windbg !analyze -v 输出中的 "BUGCHECK_STR: APPLICATION_FAULT_NULL_CLASS_PTR_READ_AFTER_CALL"是什么意思,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14979343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com