Q&A

  • 디버그가 안돼요
전 visual c++의 디버그 처럼
델파이에서는 안돼나요?
분명..델파이에서도 breakpoint가 있던데..

빈폼에 버튼 하나 가져다 놓고 버튼 클릭 이벤트안에다가 break를
걸었거든요..

그러고 나서 F8,F7번 혹은 F4번 눌러서 디버그 시켰는데
breakpoint가 갑자기 녹색으로 변하면서 x표시가 되네여..

대체 어떻게 된거지요?.. visual c++에서는 이렇게 하면 breakpoint
에 딱 걸리든데
델파이에서는 어떻게 하는지 좀 알려주세요.. 네?

어떤 델파이 프로그램을 분석할라고 하는데 디버그하는 법을 몰라서요..
델파이 초보의 부탁을 들어주시기 바랍니다. 델파이4.0을 쓰고 있습니다.
please~~~~
4  COMMENTS
  • Profile
    열심히 2003.01.14 10:49
    녹색줄에 엑스표시 몇가지의 요인이 있는지는 모르겠지만..

    님이 거신 라인이 실제적으로 컴파일 될때 무시되는 라인이기 떄문에..

    그럴것입니다...뭐라도 한줄 적으시고..걸어보세요..

    이글을 보실떄에는 이미 해보셨을듯...^^

  • Profile
    강동호 2003.01.14 19:05
    답변주신것에 대해 먼저 무지무지하게 감사드립니다. ^^
    근데 님께서 말씀하신대로 몇줄 적어놓고 해봤는데도
    녹색줄에 빨간엑스표시는 여전히 나타났습니다.
    대체 이럴때는 무슨 요인이 있는건가요?
    그냥 첨에 간단하게 새프로젝트 만들고 빈폼에 버튼 하나 올려놓고
    버튼 클릭 이벤트에 대충 이런 코드를 넣어놨거든요..
    이 이벤트 함수 어느곳에서 breakpoint를 걸어도
    실행될때 걸리지도 않고 그냥 breakpoint자리에 엑스표시만
    뜹니다..
    대체 어떤 요인이 있는지 갈켜주세요... 갈켜주시면
    정말 감사하겠습니다.

    procedure TForm1.Button1Click(Sender: TObject);
    var
      f,  f1 : Integer;
    begin
         if MessageDlg('1'+
                      ' 시나리오를 사용할까요?',
                      mtConfirmation, [mbYes,mbCancel],0) <> mrYes then Exit;

          f1:=1;
          for f := 1 to 3 do begin
              INC(f1);
          end;
    end;


  • Profile
    한원희 2003.01.14 22:47
    안녕하세요. 한원희입니다.

    아무래도 컴파일 옵션이 잘못 지정되어 있을 것 같군요...
    디버깅을 하기 위해서는 Project / Compilee 옵션에 보면,
    디버깅에 관련된 옵션들이 있는데, 이 옵션들이 꺼져 있는지 확인해 보십시오.
    꺼져 있다면, 컴파일시에 디버깅에 관련된 정보를 넣지 않기 때문에 IDE에서도 디버깅이 불가능합니다. 기본적으로 Debug Information을 설정해 주시면 될것 같습니다.

  • Profile
    하얀까마귀 2003.01.14 21:30
    안녕하세요 하얀까마귀 입니다.
         if MessageDlg('1'+
                      ' 시나리오를 사용할까요?',
                      mtConfirmation, [mbYes,mbCancel],0) <> mrYes then Exit;
        // 아마도 이 윗부분에서는 될것 같구요..

        // 이아랫부분은 어디에 하셔도 아마 걸리지 않을껍니다.

          f1:=1;
          for f := 1 to 3 do begin
              INC(f1);
          end;

    이유는 실제 계산값을 저장하는 F1 이라는 값이 지역변수로
    함수가 끝난다음에는 사라지는 값입니다.
    그런데 함수내에서는 어디에서도 사용되어지고 있지 않습니다.
    단지 계산을 해서 버려버리죠..
    그래서 컴파일러는 자동으로 해당부분을 부시해 버리는겁니다.

    for문 다음에 showmessage(inttostr(fi)); 이라고 넣어주시면
    될껍니다. 그럼.