c – 如何检测程序在无限循环中的位置?

c – 如何检测程序在无限循环中的位置?,第1张

概述我正在开发一个(相对复杂的)游戏.游戏在发布模式下冻结. 1-2分钟后发生冻结.游戏玩法.我的释放模式的当前配置允许我打破(即进入调试),这很好,但可能会给我错误的信息,但这对于这个特殊情况很好(我可以关闭单个优化文件/功能/代码). 问题是,我(我们,因为我们是一个团队)不知道它挂在哪里.它并不像一个相对较小的无限循环一样简单,因为其他东西(图形,声音)正在更新,只是游戏停止了.主游戏循环(无限 我正在开发一个(相对复杂的)游戏.游戏在发布模式下冻结. 1-2分钟后发生冻结.游戏玩法.我的释放模式的当前配置允许我打破(即进入调试),这很好,但可能会给我错误的信息,但这对于这个特殊情况很好(我可以关闭单个优化文件/功能/代码).

问题是,我(我们,因为我们是一个团队)不知道它挂在哪里.它并不像一个相对较小的无限循环一样简单,因为其他东西(图形,声音)正在更新,只是游戏停止了.主游戏循环(无限循环)总是在运行并且非常长/复杂,因此单步执行将是一个痛苦(但它是一个选项).

我尝试的第一件事是Visual Studio的中断,但它总是在不是我的代码中断,因此显示我的汇编输出.最终,有足够的持久性,SVN历史检查和注释掉代码我将能够找出它挂在哪里,但必须有一个更好的方法…希望?

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

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

解决方法 如果您中断并遇到不属于您的本机代码,请检查调用堆栈.调用堆栈是调用以到达代码中当前点的函数列表.在堆栈中向上某个级别,直到遇到当前正在运行的方法. 总结

以上是内存溢出为你收集整理的c – 如何检测程序在无限循环中的位置?全部内容,希望文章能够帮你解决c – 如何检测程序在无限循环中的位置?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1214015.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存