mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-05 23:37:58 +02:00
70 lines
1.5 KiB
ObjectPascal
70 lines
1.5 KiB
ObjectPascal
{
|
|
*****************************************************************************
|
|
This file is part of the Lazarus Component Library (LCL)
|
|
|
|
See the file COPYING.modifiedLGPL.txt, included in this distribution,
|
|
for details about the license.
|
|
*****************************************************************************
|
|
}
|
|
unit UTrace;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
|
|
interface
|
|
|
|
uses
|
|
sysutils, LazFileUtils;
|
|
|
|
type
|
|
TAssertErrorAddrType = Pointer;
|
|
|
|
TAssertErrorProc = procedure(Const Msg,FN :ShortString;
|
|
LineNo: LongInt; TheAddr: TAssertErrorAddrType);
|
|
|
|
var
|
|
TraceFileName : string;
|
|
OldProcPointer : TAssertErrorProc; // the current Assert Error Handler
|
|
|
|
|
|
implementation
|
|
|
|
procedure TraceAssertHandler(Const Msg,FN : ShortString;
|
|
LineNo: LongInt; TheAddr: TAssertErrorAddrType);
|
|
var
|
|
fileH : Text;
|
|
begin
|
|
|
|
if LowerCase(LeftStr(Msg, 6)) = 'trace:' then
|
|
begin
|
|
Assign(fileH, TraceFileName);
|
|
{$I-}
|
|
if TraceFileName <> '' then
|
|
if FileExistsUTF8(TraceFileName) = False then
|
|
begin
|
|
Rewrite(fileH);
|
|
Close(fileH);
|
|
end;
|
|
|
|
Append(fileH);
|
|
|
|
if ioresult = 0 then
|
|
Writeln(fileH, RightStr(Msg, Length(Msg) - 6));
|
|
|
|
Close(fileH);
|
|
{$I+}
|
|
end
|
|
else
|
|
oldProcPointer(Msg, FN, LineNo, TheAddr);
|
|
|
|
end;
|
|
|
|
|
|
initialization
|
|
|
|
TraceFileName := '';
|
|
OldProcPointer := AssertErrorProc; // the current Assert Error Handler
|
|
AssertErrorProc := @TraceAssertHandler // set to new Assert Error Handler
|
|
|
|
end.
|