자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 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 15768
공지 유용한 관련 사이트 관리자2 2014.03.20 54583
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 97995
2019 Seattle 에서 Form Show [1] 제트콜 2016.03.02 269
2018 실행중 꺼지는 현상 [1] 포세가이 2019.04.06 270
2017 vcl 라이브러리를 firemonkey로 변환하는데 애를 먹습니다 ㅠ.ㅠ [1] 아크나톤 2019.04.21 270
2016 안드로이드 9.0 버젼일때 앱 튕기는 현상 [2] 희망나라 2020.03.06 270
2015 SOAP/WSDL 질문드립니다. file 마이다스준 2020.04.09 270
2014 Embarcadero RAD Studio 10 Seattle에서 안드로이드 SDK 셋팅 문의 [1] 스미스 2015.12.22 270
2013 windows 10 과 windows 7 에서 query 시 속도 차이가 발생합니다.. 델파이뿌셔야함 2020.07.21 270
2012 [질문] XE7 에서 핸드폰이 Target Platforms(Androiid) - Android - Android SDK 22.3 32bit 에 접속되지 않습니다 [2] file delphi 2016.04.17 271
2011 [델파이 부트캠프] 윈도우모바일 10 앱 제작도 가능한가요? 험프리 2016.09.30 271
2010 퀵레포트에 관해서..? [2] 헨씀히포 2017.10.19 271
2009 (안드로이드)질문드립니다. [2] 힘을내요슈퍼파워 2019.06.05 271
2008 PAServer 원격 연결이 안돼는 증상??? [2] sihwan 2020.06.03 271
2007 INDY9 -> INDY10으로 변경 시 오류 file ki 2017.04.04 271
2006 BitBtn 모양이 프로젝트마다 달라요. 도와주세요. [1] file kwy0702 2017.10.26 272
2005 제공해주신 delphicbuilder10_3_2_496593b.iso 파일로 설치하니 android SDK 설치가 왜안되는 것인지요? [4] file 화이부동 2019.08.11 272
2004 컴포넌트 인스톨 후 Palette에 올라오지 않는경우 [3] agbnielsen 2015.04.14 272
2003 IBLite 연결이 잘 안되네요~ [6] file 아놀드 2016.01.07 272
2002 [FireDAC][Phys]-300. Driver [ORACLE] is not registered. Correct driver ID or define [ORACLE] virtual driver in FDDriver.ini [1] 나마 2020.08.05 272
2001 델파이 프로페셔널버젼에서 로컬DB 개발작업이 가능한가요? [1] 드레곤 2016.06.09 273
2000 윈8에서 BDE실행시 화면에 보이지않는 이유가 뭘까요? [1] 비웅 2016.08.16 273