From 5612452b4027a03c38e9df2e819afc223b7ecf87 Mon Sep 17 00:00:00 2001 From: martin Date: Sat, 15 Feb 2014 01:42:00 +0000 Subject: [PATCH] Debugger: put some common types into DbgIntf git-svn-id: trunk@44080 - --- debugger/test/Gdbmi/testbase.pas | 7 ++++++- debugger/test/Gdbmi/testbreakpoint.pas | 2 +- debugger/test/Gdbmi/testdisass.pas | 2 +- debugger/test/Gdbmi/testwatches.pas | 27 +++++++++++++++++--------- 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/debugger/test/Gdbmi/testbase.pas b/debugger/test/Gdbmi/testbase.pas index b7e1759696..ecf939f8a0 100644 --- a/debugger/test/Gdbmi/testbase.pas +++ b/debugger/test/Gdbmi/testbase.pas @@ -7,7 +7,7 @@ interface uses Classes, SysUtils, FileUtil, fpcunit, testutils, testregistry, EnvironmentOpts, TransferMacros, LCLProc, LazLogger, CompileHelpers, Dialogs, ExtToolDialog, - Debugger, GDBMIDebugger; + Debugger, GDBMIDebugger, FpGdbmiDebugger; (* fpclist.txt contains lines of format: @@ -387,6 +387,7 @@ end; function TGDBTestCase.GdbClass: TGDBMIDebuggerClass; begin Result := TGDBMIDebugger; + //Result := TFPGDBMIDebugger; end; procedure TGDBTestCase.DoDbgOut(Sender: TObject; S: string; var Handled: Boolean); @@ -1266,6 +1267,10 @@ initialization DebugLogger.FindOrRegisterLogGroup('DBGMI_TYPE_INFO', True )^.Enabled := True; DebugLogger.FindOrRegisterLogGroup('DBGMI_TIMEOUT_DEBUG', True )^.Enabled := True; + DebugLogger.FindOrRegisterLogGroup('FPDBG_DWARF_SEARCH', True)^.Enabled := True; + DebugLogger.FindOrRegisterLogGroup('FPDBG_DWARF_WARNINGS', True)^.Enabled := True; +//FPDBG_DWARF_VERBOSE + AppDir := AppendPathDelim(ExtractFilePath(Paramstr(0))); if not(CheckAppDir(AppDir)) diff --git a/debugger/test/Gdbmi/testbreakpoint.pas b/debugger/test/Gdbmi/testbreakpoint.pas index f691033b1c..4f83c9284a 100644 --- a/debugger/test/Gdbmi/testbreakpoint.pas +++ b/debugger/test/Gdbmi/testbreakpoint.pas @@ -5,7 +5,7 @@ unit TestBreakPoint; interface uses - SysUtils, fpcunit, testutils, testregistry, TestGDBMIControl, + SysUtils, fpcunit, testutils, testregistry, TestGDBMIControl, DbgIntfBaseTypes, TestBase, Debugger, GDBMIDebugger, LCLProc, TestWatches; type diff --git a/debugger/test/Gdbmi/testdisass.pas b/debugger/test/Gdbmi/testdisass.pas index 09c7469c51..b03503bc87 100644 --- a/debugger/test/Gdbmi/testdisass.pas +++ b/debugger/test/Gdbmi/testdisass.pas @@ -6,7 +6,7 @@ interface uses Classes, SysUtils, fpcunit, testutils, testregistry, LCLProc, - GDBMIDebugger, Debugger, DebugManager, maps; + DbgIntfBaseTypes, GDBMIDebugger, Debugger, DebugManager, maps; type TTestDisAssRegion = record diff --git a/debugger/test/Gdbmi/testwatches.pas b/debugger/test/Gdbmi/testwatches.pas index df9501a1e4..0448b96d4c 100644 --- a/debugger/test/Gdbmi/testwatches.pas +++ b/debugger/test/Gdbmi/testwatches.pas @@ -5,7 +5,7 @@ unit TestWatches; interface uses - Classes, SysUtils, fpcunit, testutils, testregistry, TestGDBMIControl, + Classes, SysUtils, fpcunit, testutils, testregistry, TestGDBMIControl, DbgIntfBaseTypes, TestBase, Debugger, GDBMIDebugger, LCLProc, SynRegExpr, Forms, StdCtrls, Controls; const @@ -1311,6 +1311,13 @@ begin // maybe typename = "set of TEnum" AddFmtDef('VarEnumSetA', '^\[Three\]$', skSet, '', [IgnDwrf2IfNoSet]); AddFmtDef('VarSetA', '^\[s2\]$', skSet, '', [IgnDwrf2IfNoSet]); + + AddFmtDef('GlobSubEnum', '^Two$', skEnum, '', []); + + AddFmtDef('GlobSubRange1', '^55$', skSimple, '9..77', []); + //some gdb report 248 (stabs <= 7.2.1 // ) + AddFmtDef('GlobSubRange2', '.', skSimple, '-9..-7', []); + {%endregion * Enum/Set * } {%region * Variant * } @@ -2015,11 +2022,9 @@ var end; procedure TestWatch(Name: String; AWatch: TCurrentWatch; Data: TWatchExpectation; WatchValue: String = ''); - const KindName: array [TDBGSymbolKind] of string = - ('skClass', 'skRecord', 'skEnum', 'skSet', 'skProcedure', 'skFunction', 'skSimple', 'skPointer', 'skVariant'); var rx: TRegExpr; - s: String; + s, s2: String; flag, IsValid, HasTpInfo, f2: Boolean; WV: TWatchValue; Stack: Integer; @@ -2096,13 +2101,14 @@ var // Check TypeInfo s:=''; - if HasTpInfo then s := KindName[WV.TypeInfo.Kind]; + if HasTpInfo then WriteStr(s, WV.TypeInfo.Kind); + WriteStr(s2, DataRes.ExpKind); IgnoreText := ''; if IgnoreKind then IgnoreText := 'Ignored by flag'; if IsValid and HasTpInfo then begin if (not IgnoreKind) and IgnoreKindPtr and (WV.TypeInfo.Kind = skPointer) then IgnoreText := 'Ignored by flag (Kind may be Ptr)'; - f2 := TestEquals(Name + ' Kind', KindName[DataRes.ExpKind], KindName[WV.TypeInfo.Kind], DataRes.MinGdb, DataRes.MinFpc, IgnoreText); + f2 := TestEquals(Name + ' Kind', s2, s, DataRes.MinGdb, DataRes.MinFpc, IgnoreText); end else begin - f2 := TestTrue(Name + ' Kind is "'+KindName[DataRes.ExpKind]+'", failed: STATE was <'+dbgs(WV.Validity)+'>, HasTypeInfo='+dbgs(HasTpInfo)+' Val="'+s+'"', False, DataRes.MinGdb, DataRes.MinFpc, IgnoreText); + f2 := TestTrue(Name + ' Kind is "'+s2+'", failed: STATE was <'+dbgs(WV.Validity)+'>, HasTypeInfo='+dbgs(HasTpInfo)+' Val="'+s+'"', False, DataRes.MinGdb, DataRes.MinFpc, IgnoreText); end; if (not f2) and IgnoreAll then exit; // failed Data, do not list others as potential unexpected success @@ -2112,7 +2118,7 @@ var if IsValid and HasTpInfo then begin s:=''; if HasTpInfo then s := WV.TypeInfo.TypeName; - CmpNames('TypeName', DataRes.ExpTypeName, s, fTpMtch in DataRes.Flgs); + CmpNames(Name+' TypeName', DataRes.ExpTypeName, s, fTpMtch in DataRes.Flgs); //if fTpMtch in DataRes.Flgs //then begin // rx := TRegExpr.Create; @@ -2138,8 +2144,11 @@ var DataRes.MinGdb, DataRes.MinFpc, IgnoreText);; if j >= 0 then begin fld := WV.TypeInfo.Fields[j]; + WriteStr(s, MemberTests[i].ExpKind); + WriteStr(s2, fld.DBGType.Kind); if fld.DBGType <> nil then begin - TestTrue(Name + ' members with name ' + MemberTests[i].Name + ' type=' + KindName[MemberTests[i].ExpKind] + ' but was ' + KindName[fld.DBGType.Kind], + TestTrue(Name + ' members with name ' + MemberTests[i].Name + ' type=' + + s + ' but was ' + s2, MemberTests[i].ExpKind = fld.DBGType.Kind, DataRes.MinGdb, DataRes.MinFpc, IgnoreText);; CmpNames(Name + ' members with name ' + MemberTests[i].Name + 'TypeName', MemberTests[i].ExpTypeName, fld.DBGType.TypeName, fTpMtch in MemberTests[i].Flgs);