Q&A

  • 무한루프가 어디서 도는지 알수 있는 방법?
질문처럼 한 프로시져 안에 루프를 여러번 돌립니다
begin
   ....

   while not eof do begin
           ...
           ...
        Next;
   end;


   while not eof do begin
           ...
           ...
        while not eof do begin
            ....
            .....

            Next;
        end;
        Next;
   end;

   while not eof do begin
           ...
           ...
        Next;
   end;

end;
위처럼 여러번의 While 문이 있는데 각 While문의 루프는 수백번 되풀이 됩니다. 그렇다면 무한루프가 걸렸을때 어떤 While문에서 걸렸는지는 어떻게 알 수 있나요? 디버그를 하면서 알 수야 있겠지만은요... 수백번 루프의 디버깅을 계속 할 수도 없고...  무신 방법이 있을까요?...

감사합니다.

  
2  COMMENTS
  • Profile
    한원희 2002.01.26 22:23


    네... 디버거로도 충분히 해결 가능합니다.
    브레이크 포인트를 설정할 때, 특정 변수의 값이 사용자가 설정한 값이 되었을 때만, 멈추게 할 수 있는 기능이 있거든요... 그러니까, 위의 루프에서 임의의 임시 변수를 하나 만들어서 값을 1씩 증가시키고, 그곳에 브레이크 포인트를 거는데, 그 변수값이 원하는 만큼 수행된 다음에 멈추도록 설정(Condition)하면 됩니다.
    프로그램 실행후 멈췄을 때, 다시 그 값을 변경해서 또 다음번 알아보고, 이런식으로 하면, 매우 편리하게 루프를 디버깅 할 수 있습니다.
    브레이크 포인트를 설정하는 방법은 매우 다양합니다. 이를 설정하기 위해서는 델파이의 View/Debug Windows/Breakpoints 창을 여시거나, 직접 단축키로 Ctrl+Alt+B로 연 후에, 해당 브레이크 포인트에 대한 등록정보를 설정하면 됩니다. ^^;
  • Profile
    김규억 2002.01.26 17:50
    메시지박스를 이용하면 되겠지요...

    showmessage()나 application.messagebox()나....

    아래 표시합니다...







    application.messagebox('시작', '확인', MB_OK);




    application.messagebox('첫번째', '확인', MB_OK);




    application.messagebox('두번째', '확인', MB_OK);




    application.messagebox('종료', '확인', MB_OK);