4

我编写了一个 delphi 程序,它已经变得有些复杂。现在我面临一个问题,我在某个地方引入了一个无限循环,但我找不到该位置。该程序是一个实时应用程序,可以无限期挂断。是否有可能暂停执行并找出我的程序当前在哪里?

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

4

2 回答 2

12

调试器可能会显示不同线程的堆栈跟踪,而不是您在暂停程序时所期望的。您可以从“线程状态”窗口 (Ctrl+Alt+T) 进行检查。

于 2013-07-10T13:52:59.970 回答
9

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

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

于 2013-07-10T13:53:08.210 回答