加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 09:36:02 所属栏目:百科 来源:网络整理
导读:我正在开发一个(相对复杂的)游戏.游戏在发布模式下冻结. 1-2分钟后发生冻结.游戏玩法.我的释放模式的当前配置允许我打破(即进入调试),这很好,但可能会给我错误的信息,但这对于这个特殊情况很好(我可以关闭单个优化文件/功能/代码). 问题是,我(我们,因为我们
我正在开发一个(相对复杂的)游戏.游戏在发布模式下冻结. 1-2分钟后发生冻结.游戏玩法.我的释放模式的当前配置允许我打破(即进入调试),这很好,但可能会给我错误的信息,但这对于这个特殊情况很好(我可以关闭单个优化文件/功能/代码).

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

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

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

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

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读