gpt4 book ai didi

c++ - 如何调试堆栈溢出异常?

转载 作者:太空狗 更新时间:2023-10-29 23:13:17 24 4
gpt4 key购买 nike

我正在开发一款游戏,一切都很好,直到我添加了一些功能。我在这个功能上工作了大约一个月,不幸的是我没有足够的智慧来测试代码的较小部分,所以我添加了很多代码,现在我得到了这个错误。

Unhandled exception at 0x77555098 (ntdll.dll) in SFML setup.exe: 0xC00000FD: Stack overflow (parameters: 0x00000001, 0x006D2FA8). 

我的代码很大,要检查每个函数真的很难。在调试器调用堆栈中,此特定函数会重复多次。

void SceneNode::onCommand(const Command &command, sf::Time dt)
{
if (command.category.at(getCategory()))
command.action(*this, dt);

for(const Ptr& child : mChild)
{
child->onCommand(command, dt);
}
}

SceneNode 是树状结构,并且有一些child。此函数尝试遍历树,以查看哪些节点可以执行特定命令。

最佳答案

我回答了这个问题:“如何调试堆栈溢出异常?”。
1- 错误可重现?如果是,请继续
2- 使用 windbg(或 ollydbg 或任何其他)附加/打开您的进程
3- 触发你的异常
4- 查看寄存器的内容(特别是(对于 32 位)eipebp)
5- 转储 esp 以检查堆栈帧
它应该是这样的:

{ Local Var -> Saved EBP -> Saved EIP -> Params -> Address of Exception Handler }

你可以在这个 link 找到一个非常好的和详细的解释

关于c++ - 如何调试堆栈溢出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40342863/

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