我的Delphi程序运行时陷入死循环,如何找出导致死循环的语句?(300分)

  • 主题发起人 陈冲伟
  • 开始时间
放一个全局变量f:boolean;初始化f := true;

在按键事件中写入:
begin
if not f then exit
else f := false;
......//按键事件
f := true;
end;
无论用户按键多快,也快不过一句简单的if语句的执行速度。
 
最好把程序贴出来,让大伙共同分析一下。
 
看看代码好说
 
使用穷人的调试器
在你认为有问题的句子前面加MESSAGEBEEP,把声音开大

还有你可以再读键前设定一个延时
如果延时不到就退出读键
 
把程序的各个关键地方写上标记,执行到这个地方就把这个标记存在一个tstring中,
最后吧tstring存成文件,就是一个log文件,再分析这个文件
 

不看你的程序是无法知道的,我是高手,又是好人!把程序贴出来,我帮你找!!!
 
可设置断点,用F4 F7等方法调试
 
用dlnew的方法试试
 
将代码贴出来吧
 
在调试器中运行,死循环之后按下RUN图标旁边的PAUSE,然后就可以知道在哪儿出错了,
这个时候再单步跟踪运行。
(如果有人怕死循环资源消耗大,可以预先在任务管理器把调试的进程的优先级设置到
最低)
 
当然是用眼睛看啦!看着代码窗口,然后不停的按F7、F8……
如果是自己写的程序,应该能比较清楚结构的,找那些可能存在不确定因素的段落……
 
这种问题我一般这样处理:
在Form上放一个Memo1,在自编的每个函数第一句加 memo1.lines.add('??? 函数 in:');最后一句加
memo1.lines.add('??? 函数 out!');执行程序,观察memo1的显示情况,有些时候memo1中in/out 不配对,说明该函数中有异常,
对调试软件很有帮助.

 
[blue]进行单步运行,也就是一条语句一条语句的执行,再睁大眼睛仔细检查![/blue]
My E'mail address is hgtzy@21cn.com [8D]
 
设置断点
一般是在循环内部
 
顶部