Delphi附带一个集成的调试器.你应该使用它.以下是如何开始调查程序似乎挂起的情况.
使用"播放"按钮在调试器的控制下启动程序.
重现您正在尝试调查的情况.
程序挂起时,切换到调试器并按"暂停"按钮.调试器将中断程序的执行,以便您可以调查当前状态.
看看调用堆栈.(如果调用堆栈窗口尚未显示,则可以使用IDE中的"调试窗口"菜单选项显示它.)
调用堆栈将显示程序调用的函数列表.堆栈顶部将是您暂停时程序运行的功能.它下面的函数将是调用当前函数的函数,依此类推,直到到达堆栈的底部,这表示程序的主要功能.
你停下来的功能可能不是你写的.相反,它通常是由操作系统或Delphi运行时库提供的功能.你不想调试那些.通常,您可以假设它们已经正常工作.你在寻找一个错误的代码来代替.
使用"run until return"命令让最顶层的功能继续运行.重复此操作,直到到达调用堆栈上的某个函数.那可能是罪魁祸首.
现在您已经确定了有问题的功能,现在是时候进一步调查了.
使用"step over"调试器命令逐个运行函数的每一行.(还有一个"步入"命令,但这将进入不属于你的功能,你现在对这些功能不感兴趣.)
观察代码中变量的当前值.您可以将鼠标悬停在变量上以让调试器在工具提示中显示其值,或者您可以使用"监视"调试窗口一次显示多个变量.它们将在您的程序中的每个步骤后更新.
注意变量的值.你应该已经对他们的价值观在你的计划过程中如何取得进展有所期待.在编写代码时,您可能已经考虑过这种进展.回想那段时间,将您在调试器中观察到的结果与之前的预期进行比较.他们匹配吗?如果是这样,那么继续单步执行代码.但是,如果它们不匹配,那么你就发现了一个错误.修理它.
另一个意外行为的来源是在您的程序中达到您不希望达到的某个点.也许程序调用了一个它不应该具有的功能,或者你可能已经执行过多次你想要的循环.如果你能找出原因,那么修复bug.否则,您可能需要备份一些方法.
在您观察到意外行为的位置之前,确定程序中的某个点.查找代码编辑器左边距中的蓝点.这些点表示可以设置断点的位置.单击其中一个点,您应该注意到该行突出显示(可能为红色).
终止您的程序,然后再次运行它.
这次,您应该看到调试器在程序出现挂起之前停止,因为执行将首先到达断点.调试器会中断您的程序.
像以前一样逐步执行代码行,并观察导致程序转向预期执行路径的条件.当您确定错误后,请修复它.