gpt4 book ai didi

c++ - 如何检测程序陷入无限循环的位置?

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

我正在开发一款(相对复杂的)游戏。游戏在 Release模式下卡住。卡住发生在 1-2 分钟后。游戏玩法。我拥有的 Release模式的当前配置允许我中断(即进入调试),这很好,但可能会给我错误的信息,但这对于这种特殊情况来说很好(我可以关闭单个优化文件/功能/代码)。

问题是,我(我们,因为我们是一个团队)不知道它卡在哪里。它不像挂起的一个相对较小的无限循环那么简单,因为其他东西(图形、声音)正在更新,只是游戏停滞了。主游戏循环(无限循环)始终在运行,并且非常长/复杂,因此单步执行会很痛苦(但这是一种选择)。

我尝试的第一件事是 Visual Studio 的 break all 但它总是在不是我的代码中中断,因此向我显示程序集输出。最终,有了足够的坚持,SVN 历史检查和注释代码我将能够找出它卡在哪里,但必须有更好的方法......希望吗?

注意:我知道有一个 Visual Studio 选项允许仅调试用户代码,但那只是托管代码。

编辑:能够通过堆栈跟踪和大量时间跟踪各种事情以查看游戏挂起 来解决问题。我会选择 Sjoerd 的答案作为正确答案,但是,如果有人对允许自动化此类任务的工具/技术提出建议,请务必添加您的答案!

最佳答案

如果您中断并遇到不属于您的 native 代码,请检查调用堆栈。调用堆栈是为到达代码中的当前点而调用的函数列表。在堆栈中向上移动一些级别,直到遇到当前正在运行的方法。

关于c++ - 如何检测程序陷入无限循环的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6708042/

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