死循环的程序如何调试

micr0soft 2010-03-30 01:07:51
由于非常复杂,进入死循环,传统的加日志办法已经不能解决问题了。
每次死循环时CPU占用100%,用Break中断后发现代码是汇编的,也无法进行定位,怎么搞?
...全文
525 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
tcyy408 2010-03-30
  • 打赏
  • 举报
回复
1、查看循环变量,看变量都在哪个地方更改,在循环体内有无重新初始化或者一点都没有变化
2、查看循环条件
3、设定循环次数来调试
4、弹出消息框来判断循环
5、考虑内存泄露,系统资源不断地申请却没有释放
ososo 2010-03-30
  • 打赏
  • 举报
回复
你这个问题不在死循环,而是堆栈溢出了。
SullenSun 2010-03-30
  • 打赏
  • 举报
回复
循环太多还是循环次数太多?
visualassist4680 2010-03-30
  • 打赏
  • 举报
回复
先查查是不是死循环的问题吧,感觉不像,应该是程序出错了,感觉像是死循环了
guangyou 2010-03-30
  • 打赏
  • 举报
回复
打印log日志,在逐步排除一些循环,尽量缩小范围,定位后就可通过一下限定条件去调试了。
oyljerry 2010-03-30
  • 打赏
  • 举报
回复
调试的时候可以设置条件,可以当某个变量达到什么值以后再开始调试,自己逐步隔离
zhou1xp 2010-03-30
  • 打赏
  • 举报
回复
在调试的时候设置循环次数
wangk 2010-03-30
  • 打赏
  • 举报
回复
堆栈回朔。
用Processex看那个线程占的cpu最多,然后看它的堆栈。
fandh 2010-03-30
  • 打赏
  • 举报
回复
在循环语句的头部,加输出日志等标识!这个没有什么好方法!只有先定位了!
Eleven 2010-03-30
  • 打赏
  • 举报
回复
那你在每一个循环前后把值处理,如果循环前的值可以输出,而循环后的值不能输出,就说明该循环是死循环
cdsnpeter 2010-03-30
  • 打赏
  • 举报
回复
理论上中断后发现汇编碼,出错的地点不可跟踪的时候,常常是在我们代码中已经发生了错误。
为什么加日志的方法已经不能解决问题了?
快乐鹦鹉 2010-03-30
  • 打赏
  • 举报
回复
我想你总有主要怀疑的那几个循环过程吧。死循环嘛,可以考虑循环1000次,10000次作为死循环的条件,来设定断点。
快乐鹦鹉 2010-03-30
  • 打赏
  • 举报
回复
你的程序中有多少循环?在循环开始前,加个判断,如果循环次数大于1000(是循环次数,不是指那个循环变量,因为也许这个循环变量一直不改变造成死循环),就ASSERT(FALSE),应该可以定位。

16,549

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧