자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다. 
  • 제품설치/등록 오류 문의: 설치/등록 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 17227
공지 유용한 관련 사이트 관리자2 2014.03.20 56107
공지 본 게시판은 개발자 여러분들의 질문과 답변을 공유하는 공간입니다. 관리자 2012.01.10 99543
993 TComport 64bit도 지원가능한가요? [2] 야크 2021.01.12 402
992 firedac 한글 깨짐 문의 mecagoki 2016.10.21 403
991 10.2 Datasnap서버에 ClientDataSet 사용시 Midas.dll 오류 문의 [1] 심바 2019.02.12 403
990 이메일 질문입니다. [2] 희망나라 2019.08.26 404
989 [XE8 웹세미나] 실행중 발생하는 Access violation시 클래스명이라도 표시 해줬으면 디버깅 속도 개선에 많은 도움이 될듯합니다. [1] 관리자 2015.05.08 404
988 바코드스캔이 넘느려서 질문드립니다 [1] 화현 2019.11.23 405
987 XE7에서 WinRT 같은 Win10 기능을 사용 할 수 있나요? [3] 가나당 2015.08.03 405
986 델파이 시애틀 관련문의 [1] file rrraggg 2017.07.20 406
985 [마이그레이션][델파이4>2007] DBCtrlGrid에 DBLookupCombo를 올린 후 콤보를 선택하면 ""Operation not allowed in DBCtrlGrid"" 오류가 발생하고 목록이 표시되지 않습니다. 어떻게 해결해야하나요? 험프리 2015.05.30 406
984 Incompatible type 에러 (재질문) [1] gent 2018.11.15 407
983 DBGRID 질문 드립니다. [2] 초보델팡이 2019.08.23 407
982 listbox의 multiselect 속성 접근 [2] 라드 2015.12.28 407
981 [REST 웨비나] REST API 동시 처리에 따른 DB Connection 및 트렌젝션 관리? 험프리 2020.09.17 407
980 TSQLQuery 사용시 operation not supported [1] 영들사랑 2020.12.30 409
979 [세미나: 데이터와 RAD] 공유메모리를 32비트에서 잘사용중인데 64비트에서 문제가 있습니다. [2] 험프리 2020.06.24 410
978 [질문] TEdgeBrowser 에서 새창 크기 문제 [1] 겨울아이 2021.02.10 410
977 델파이를 이용하여 ioT [2] 김하나 2016.05.13 411
976 오류 추적중입니다.... 도의 2017.05.11 411
975 날짜 포멧을 설정하고 들어가니 에러가 발생합니다. [3] 거북이 2015.10.21 411
974 [Q]Delphi 5, 7의 Oracle 12c 지원 문의 [2] 지롱 2016.01.27 412