在运行时在Delphi中查找当前执行点

时间:2013-07-10 13:39:35

标签: delphi debugging

我写了一个delphi程序,它已经发展到一些复杂程度。现在我正面临着这个问题,我在某个地方引入了无限循环,但我找不到位置。该程序是一个实时应用程序,无限期挂起。有没有可能暂停exectution并找出我的程序目前在哪里?

当我使用delphi调试器的暂停按钮时,它总是在一个名为ntdll.RtlUserThreadStart的行的cpu窗口中断,似乎是某种os方法,但我不知道这意味着什么。即使单步执行汇编程序也不会在我的代码的任何行中返回。是否有可能说调试器停在我的代码中的任意行,它正在执行?

2 个答案:

答案 0 :(得分:11)

调试器可能正在显示不同线程的堆栈跟踪,然后显示暂停程序时的预期。您可以从“线程状态”窗口(Ctrl + Alt + T)中检查它。

答案 1 :(得分:9)

当您在调试器中暂停时,它不一定会显示“主”线程,但所有线程将暂停。使用线程调试窗口选择不同的线程。

当前执行点可能不在您的代码中。使用调用堆栈调试窗口来查看程序如何到达它所在的位置,并选择您感兴趣的堆栈中的哪个点。您可以使用“step out”命令退出当前函数并返回到呼叫者,召集者。当调试器在您没有源代码的库函数中暂停程序时,这很有用。