gpt4 book ai didi

c++ - 帮助在 visual studio 中调试 C++

转载 作者:搜寻专家 更新时间:2023-10-31 01:56:36 57 4
gpt4 key购买 nike

这是一个模糊的问题,所以我期待模糊(但希望有帮助)的答案。

我是 C++ 的新手,在 visual studio 中进行调试,最让我沮丧的是如何解释调用堆栈...

所以我的问题特别是关于我在堆栈顶部看到的错误。这应该说明什么?有人建议在导致堆栈损坏的代码中抛出异常。这可能由调用堆栈中的 __FrameUnwindFilter(_EXCEPTION_POINTERS*...) 行指示。我如何解释这里发生的事情?我可能不关心的东西太多了。然后最重要的是警告“下面的框架可能不正确和/或丢失”这是什么意思?我根本不能相信那些台词?为什么首先显示它?另外,为什么 dddddddd() 位于堆栈帧的底部?

请帮助我 - 我正在寻找有关如何解释堆栈的一般建议和技巧。

谢谢,

我会

对于一个特定的错误,我看到的是:

mscvcr90d.dll!_NMSG_WRITE(...) Line ###

mscvcr90d.dll!abort() Line ## + 0x7 bytes

mscvcr90d.dll!terminate() Line ###

mscvcr90d.dll!__FrameUnwindFilter(_EXCEPTION_POINTERS* ...) Line ####

mscvcr90d.dll!__FrameUnwindToState(EHRegistrationNode * ...) Line ###

mscvcr90d.dll!@_EH4_CallFilterFunc@8() + 0x12 bytes

ntdll.dll!7c9032a8()

[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]

ntdll.dll!7c90327a()

ntdll.dll

ntdll.dll

kernel32.dll

kernel32.dll

kernel32.dll

Other Library

Other Library

FINALLY MY LIBRARY CODE HERE

END OF MY LIBRARY CODE

a whole bunch of other libraries here that I haven't heard of

dddddddd()

最佳答案

这里发生了几件事。

首先是似乎确实抛出了 SEH 异常。这由 FrameUnwindToFilter 调用指示。很难简单地从调用堆栈中确切地说出发生了什么异常。如果你向下移动到那个框架并查看参数,其中一个应该有异常代码。

第二项是“下面的帧可能不正确...”当您调试没有符号的 native DLL 时,调试器会显示此消息。没有符号使得 native 调试器很难,有时甚至不可能准确地确定调用堆栈。它迫使它猜测,因此警告“可能是错误的”

这可以通过加载相关 DLL 的符号来解决。在本例中是 nt.dll 和 kernel32.dll。这些是 Microsoft 拥有的 DLL,其符号是公开可用的。以下 MDN 页面包含有关如何在您的计算机上设置公共(public)符号的更多信息

关于c++ - 帮助在 visual studio 中调试 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6866215/

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