From fd3473241b10cb9075a859ea28dae0e70a616669 Mon Sep 17 00:00:00 2001 From: mattias Date: Thu, 31 Jan 2019 22:42:47 +0000 Subject: [PATCH] IDE: fixed debugging exttool git-svn-id: trunk@60266 - --- ide/exttools.pas | 58 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 57 insertions(+), 1 deletion(-) diff --git a/ide/exttools.pas b/ide/exttools.pas index 3259965243..0fdfd05f2c 100644 --- a/ide/exttools.pas +++ b/ide/exttools.pas @@ -175,6 +175,62 @@ var implementation +{$IF defined(VerboseExtToolErrors) or defined(VerboseExtToolThread) or defined(VerboseExtToolAddOutputLines)} +function ArgsToString(Args: array of const): string; +var + i: Integer; +begin + Result := ''; + for i:=Low(Args) to High(Args) do begin + case Args[i].VType of + vtInteger: Result := Result + dbgs(Args[i].vinteger); + vtInt64: Result := Result + dbgs(Args[i].VInt64^); + vtQWord: Result := Result + dbgs(Args[i].VQWord^); + vtBoolean: Result := Result + dbgs(Args[i].vboolean); + vtExtended: Result := Result + dbgs(Args[i].VExtended^); + vtString: Result := Result + Args[i].VString^; + vtAnsiString: Result := Result + AnsiString(Args[i].VAnsiString); + vtChar: Result := Result + Args[i].VChar; + vtPChar: Result := Result + Args[i].VPChar; + vtPWideChar: Result := {%H-}Result {%H-}+ Args[i].VPWideChar; + vtWideChar: Result := Result + AnsiString(Args[i].VWideChar); + vtWidestring: Result := Result + AnsiString(WideString(Args[i].VWideString)); + vtObject: Result := Result + DbgSName(Args[i].VObject); + vtClass: Result := Result + DbgSName(Args[i].VClass); + vtPointer: Result := Result + Dbgs(Args[i].VPointer); + else Result := Result + '?unknown variant?'; + end; + end; +end; + +procedure DebuglnThreadLog(const args: array of const); +var + s, Filename: string; + fs: TFileStream; +begin + if GetCurrentThreadId=MainThreadID then + debugln(args) + else + begin + s:=ArgsToString(args)+sLineBreak; + Filename:='lazdbg'+IntToStr(GetCurrentThreadId)+'.log'; + if FileExistsUTF8(Filename) then + fs:=TFileStream.Create(Filename,fmOpenWrite or fmShareDenyNone) + else + fs:=TFileStream.Create(Filename,fmCreate); + try + try + fs.Seek(0,soEnd); + fs.Write(s[1],length(s)); + except + end; + finally + fs.Free; + end; + end; +end; +{$ENDIF} + { TLazExtToolView } procedure TLazExtToolView.SetToolState(AValue: TLMVToolState); @@ -1513,7 +1569,7 @@ begin if (not HasOutput) then begin // no more pending output and process is still running // => tool needs some time - Sleep(10); + Sleep(50); end; end; {$IFDEF VerboseExtToolThread}