Zatrzymywanie programu delphi w nieskończonej pętli

Gdy w Delphi wystąpi nieokreślona pętla, debuger nie da mi nawet śladu stosu, gdy kliknę przycisk stop. Jeśli podejrzewam, że program jest zablokowany, mogę umieścić punkt przerwania i zatrzyma się, jeśli jest to poprawna pętla nieokreślona.

Oto przykładowy program celowo powodujący pętlę nieokreśloną:

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;

Po zatrzymaniu otrzymuję coś, co wygląda tak:

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

...

W pojedynczym kroku (F7) wykonuje pojedyncze kroki po kilku liniach, a następnie blokuje się, aż ponownie uderzę, w którym to momencie uzyskuję ten sam wynik.

questionAnswers(2)

yourAnswerToTheQuestion