From a2a5fab89e64f0eed77ec50d0598755f16981231 Mon Sep 17 00:00:00 2001 From: martin Date: Sun, 4 May 2014 16:51:01 +0000 Subject: [PATCH] FpGdbmiDebugger: deal with watches if result is type instead of value git-svn-id: trunk@44907 - --- .../lazdebuggerfpgdbmi/fpgdbmidebugger.pp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/components/lazdebuggers/lazdebuggerfpgdbmi/fpgdbmidebugger.pp b/components/lazdebuggers/lazdebuggerfpgdbmi/fpgdbmidebugger.pp index be40831de7..3b32025e91 100644 --- a/components/lazdebuggers/lazdebuggerfpgdbmi/fpgdbmidebugger.pp +++ b/components/lazdebuggers/lazdebuggerfpgdbmi/fpgdbmidebugger.pp @@ -939,6 +939,7 @@ var s: String; DispFormat: TWatchDisplayFormat; RepeatCnt: Integer; + TiSym: TFpDbgSymbol; function IsWatchValueAlive: Boolean; begin @@ -1188,6 +1189,23 @@ DebugLn(ErrorHandler.ErrorAsString(PasExpr.Error)); skClass: DoClass; skInterface: ; skArray: DoArray; + skNone: begin + // maybe type + TiSym := ResValue.DbgSymbol; + if (TiSym <> nil) and (TiSym.SymbolType = stType) then begin + if GetTypeAsDeclaration(AResText, TiSym) then + AResText := Format('{Type=} %1s', [AResText]) + else + if GetTypeName(AResText, TiSym) then + AResText := Format('{Type=} %1s', [AResText]) + else + AResText := '{Type=} unknown'; + Result := True; + AWatchValue.Value := AResText; + AWatchValue.Validity := ddsValid; // TODO ddsError ? + exit; + end; + end; end; if not IsWatchValueAlive then exit;