cuốn sách gpt4 ai đã làm

c++ - win32 vs2010 空取消引用中的调用堆栈损坏,但 x64 中没有

In lại Tác giả: Walker 123 更新时间:2023-11-28 03:36:55 25 4
mua khóa gpt4 Nike

我用 vs2010 创建了一个简单的 win32 控制台程序并创建了一个空解引用:

int _tmain(int argc, _TCHAR* argv[])
{
if (*(int*)(NULL) == 5) {
printf("foo");
}
trả về 0;
}

当我使用 x64 配置运行它时,我在调试器中得到一个“未处理的异常”和有效的调用堆栈。当我切换到 win32 时,我仍然收到“未处理的异常”,但是,堆栈无效。我得到以下信息:

ntdll.dll!770a15de()    
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!770a15de()
ntdll.dll!7709014e()
>msvcr100d.dll!_heap_alloc_dbg_impl(...)
ffffffff()

知道这里发生了什么以及我该如何纠正它吗?

câu trả lời hay nhất

问题是缺少某些 Windows 库的符号;这会使它在 32 位运行中错误解析堆栈。打开 Tools\Options>Debugging>Native:'Load DLL exports'。加载 ntdll.dll 的符号可能也很有用(在“模块”窗口中右键单击它)。在那之后,引发异常的帧有时仍然会丢失,但至少您可以看到到那时为止的调用堆栈。

关于c++ - win32 vs2010 空取消引用中的调用堆栈损坏,但 x64 中没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10604243/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress