자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)

본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------
 

참고: // http://www.blong.com/Conferences/BorCon2002/Debugging/3188.htm

delphi7 기준 입니다.

 

type
  TAssertErrorProc = procedure (const Message, Filename: string;
    LineNumber: Integer; ErrorAddr: Pointer);

var
  AssertErrorProc   : TAssertErrorProc; { Assertion error handler }

function MakeDebugMsg(const Msg: String; ShowPIDAndTID: Boolean): String;
begin
  if ShowPIDAndTID then
    Result := Format('PID = %d ($%0:x), TID = %d ($%1:x): %s',
      [GetCurrentProcessID, GetCurrentThreadID, Msg])
  else
    Result := Msg;
end;
 
 
 
procedure InternalDebugMsg(const Msg: String);
begin
  OutputDebugString(PChar(Msg))
end;
 
procedure DebugMsg(const Msg: String;
  ShowPIDAndTID: Boolean = False); overload;
begin
  InternalDebugMsg(MakeDebugMsg(Msg, ShowPIDAndTID));
end;
 
procedure DebugMsg(const Msg: String; const Params: array of const;
  ShowPIDAndTID: Boolean = False); overload;
begin
  DebugMsg(Format(Msg, Params), ShowPIDAndTID)
end;
 
 
 
//The debug support code from DebugSupport.pas
procedure AssertErrorHandler(const Msg, Filename: string;
  LineNumber: Integer; ErrorAddr: Pointer);
begin
  //ErrorAddr is address Assert will return to
  //(i.e. instruction following call to Assert).
  //Subtract 1 from it to ensure it refers to part
  //of the Assert call, making it more appropriate
  DebugMsg('%s (%s, line %d, address $%x)',
    [Msg, Filename, LineNumber, Pred(Integer(ErrorAddr))]);
end;
 

procedure TfMain.Button1Click(Sender: TObject);
begin
  try
    Assert(False, 'Entering TestIt routine');
    //body of the interesting routine
    Assert(False, 'Exiting TestIt routine');
  except
  on e : Exception do
    begin
      ShowMessage(e.Message);
    end;
  end;
end;
 

procedure RerouteAssertions;
begin
{$ifdef Delphi6AndAbove}
  AssertErrorProc := AssertErrorHandler;
{$else}
  AssertErrorProc := @AssertErrorHandler;
{$endif}
end;
 
 
 
 
 
initialization
  RerouteAssertions;
 
 
번호 제목 글쓴이 날짜 조회 수
공지 [프로그래밍 강의] 2021.6~2021.12 관리자 2015.01.22 39586
공지 유용한 관련 사이트 관리자2 2014.03.20 79089
1432 CI (Continuous Integration) 구축을 위해 델파이 빌드 자동화를 구현하려는 데, MSBuild, 라이선스가 궁금합니다. [1] 관리자 2020.08.28 621
1431 컴파일 시 "Object reference not set to an instance of an object" 오류가 발생합니다. file 험프리 2017.01.19 622
1430 RAD 스튜디오 베를린 10.1에서 Graphics32 지원하나요? [2] Bishop 2016.12.19 622
1429 WebBrowser 관련 문의 [6] 세스나 2017.11.09 622
1428 LOCKBOX의 CODEC컴포넌트에서 AES 복호화시 유니코드 에러 입니다 ㅠ 돌떵이이11 2021.04.20 622
1427 [REST 웨비나] REST API 동시 처리에 따른 DB Connection 및 트렌젝션 관리? 험프리 2020.09.17 623
1426 오라클 클라이언트를 설치하지 않고 오라클 서버에 접속 할 수 있는 방법이 없나요? [2] 맛재현 2018.07.30 624
1425 문장안에 숨어있는 아스키값을 표시할순 없을까요? [1] file 라빌레나 2020.07.29 624
1424 안드로이드 프로그램 File Dialog 구현 [4] 상용 2015.09.16 625
1423 MacOS 빌드 Error [1] Sangin 2021.08.03 626
1422 레이아웃 구성할 때, VCL에서 Panel을 사용하고, fmx에서는 Layout을 사용하는데 차이가 뭔가요?? [1] zenojm 2017.11.24 626
1421 [마이그레이션] F2613 Unit 'DBTables' not found 오류가 발생합니다. file 험프리 2020.04.07 626
1420 [연말 이벤트] 개발자 Q&A 게시판을 가장 잘 활용해주신 분 상품 증정 관리자 2018.11.12 627
1419 프로젝트 생성시 에러 관련 문의 [7] file 삼이 2020.04.07 627
1418 webbrowser 문의 [1] file 김하나 2015.05.30 627
1417 sqlite [1] 희망나라 2021.03.10 627
1416 내부네트웍사용 질문입니다. [5] 희망나라 2015.06.26 628
1415 RS232 통신 구현방법을 문의 드립니다. [1] delphi1 2020.10.14 628
1414 스마트폰 앱에서 report 만드는 방법 문의 김하나 2017.07.19 628
1413 Getit Package Manager 설치시 오류 [3] file 비앤케이 2019.11.25 628