Q&A

  • [질문]프로그램에서 오류를 발생한 함수명을 확인하고 싶습니다.
오늘도 고민하고 여기저기 찾아보다 결국 해결을 못보고 이렇게 글을 올립니다.

프로그램을 관리하다보면 어디선거 오류가 발생합니다.

대체로 디버깅을 해서 해당 부분을 찾아내고 있었으나 시간 소모가 많아서 오류를 발생시킨 함수나 프로시져의 이름을 오류가 발생한 후 확인하고자 코딩 기법을 찾고 있습니다.

//프로그램에서 예외 잡아줄 프로시져 선언.
procedure AppException(Sender: TObject; E: Exception);

//프로그램에서 예외 잡아줄 프로시져 정의.
procedure TForm1.AppException(Sender: TObject; E: Exception);
begin
  ShowMessage(e.Message
    + #13#13 + Sender.ClassName
    + #13#13 + Sender.MethodName(E.ClassInfo )
    + #13#13 + E.ClassType.ClassName
    + #13#13 + E.MethodName(E.ClassInfo)
    +#13#13 + IntToStr(GetLastError)
    );
   //함수 이름을 찍을 수 있을까 하여 시행해 보았으나 않나오는군요;;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.OnException := AppException;
  //예외처리 헨들러 교체(?)
end;

코딩은 위와같이 꼭 해야하는것은 아니지만 일단 셈플이구요.
문제는 저렇게 붙여넣은 프로그램에 아무대서나 강제로 오류를 발생시키면 해당 프로시져나 함수의 이름을 확인할 방법이 델파이에는 없는듯 합니다.

C#에는 호출되었던 함수를 리스트로 받아보는 기능이 있어 오류가 발생하기 까지 호출된 함수를 볼 수 있다고 하던데 델파이는 정말 방법이 없는건가?
3  COMMENTS