gpt4 book ai didi

delphi - 停止无限循环中的delphi程序

转载 作者:行者123 更新时间:2023-12-03 15:09:19 25 4
gpt4 key购买 nike

当 Delphi 中发生无限循环时,当我按下停止按钮时,调试器甚至不会给我堆栈跟踪。如果我怀疑程序在哪里停止,我可以放置一个断点,如果这是正确的无限循环,它将停止。

下面是一个故意导致无限循环的示例程序:

procedure TForm1.btnDebugInfiniteLoopClick(Sender: TObject);
var I: Integer;
begin
I:=0;
while I<100 do begin
I:=1+1;
if I>64 then I:=I div 2;
end;
end;

停止时,我得到如下所示的内容:

ntdll.RtlUserThreadStart:
776301B4 89442404 mov [esp+$04],eax
776301B8 895C2408 mov [esp+$08],ebx
776301BC E9E99C0200 jmp $77659eaa
776301C1 8DA42400000000 lea esp,[esp+$0000]
776301C8 8DA42400000000 lea esp,[esp+$0000]
776301CF 90 nop
ntdll.KiFastSystemCall:
776301D0 8BD4 mov edx,esp

...

当我单步执行 (F7) 时,它单步执行几行,然后锁定,直到我再次按下中断键,此时我得到相同的结果。

最佳答案

罗布·肯尼迪在评论中回答。我必须从调试窗口打开线程 View 以获取线程列表并选择正确的线程;那时我可以看到我的程序在哪里无限循环。

关于delphi - 停止无限循环中的delphi程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13057133/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com