#97, rename consistently the list + clear them all together

This commit is contained in:
Basile Burg 2016-11-28 04:46:22 +01:00
parent 0d76b2250b
commit 450375e6e9
No known key found for this signature in database
GPG Key ID: 1868039F415CB8CF
2 changed files with 49 additions and 39 deletions

View File

@ -3,7 +3,6 @@ inherited CEGdbWidget: TCEGdbWidget
Height = 668 Height = 668
Top = 333 Top = 333
Width = 517 Width = 517
ActiveControl = Splitter2
Caption = 'GDB commander' Caption = 'GDB commander'
ClientHeight = 668 ClientHeight = 668
ClientWidth = 517 ClientWidth = 517
@ -38,7 +37,7 @@ inherited CEGdbWidget: TCEGdbWidget
ClientHeight = 149 ClientHeight = 149
ClientWidth = 513 ClientWidth = 513
TabOrder = 0 TabOrder = 0
object cpuVIewer: TTIPropertyGrid object cpuViewer: TTIPropertyGrid
Left = 0 Left = 0
Height = 149 Height = 149
Hint = 'cpu registers' Hint = 'cpu registers'
@ -78,7 +77,7 @@ inherited CEGdbWidget: TCEGdbWidget
Caption = 'Variables' Caption = 'Variables'
ClientHeight = 164 ClientHeight = 164
ClientWidth = 509 ClientWidth = 509
object varList: TListView object lstVariables: TListView
Left = 2 Left = 2
Height = 138 Height = 138
Top = 24 Top = 24
@ -124,7 +123,7 @@ inherited CEGdbWidget: TCEGdbWidget
Caption = 'Assembly' Caption = 'Assembly'
ClientHeight = 164 ClientHeight = 164
ClientWidth = 509 ClientWidth = 509
object asmList: TListView object lstAsm: TListView
Left = 2 Left = 2
Height = 160 Height = 160
Top = 2 Top = 2

View File

@ -344,7 +344,7 @@ type
TabSheet2: TTabSheet; TabSheet2: TTabSheet;
TabSheet3: TTabSheet; TabSheet3: TTabSheet;
TabSheet4: TTabSheet; TabSheet4: TTabSheet;
varList: TListView; lstVariables: TListView;
lstCallStack: TListView; lstCallStack: TListView;
mnuReadW: TMenuItem; mnuReadW: TMenuItem;
mnuWriteW: TMenuItem; mnuWriteW: TMenuItem;
@ -354,13 +354,13 @@ type
Panel1: TPanel; Panel1: TPanel;
Panel3: TPanel; Panel3: TPanel;
btnSendCom: TSpeedButton; btnSendCom: TSpeedButton;
cpuVIewer: TTIPropertyGrid; cpuViewer: TTIPropertyGrid;
mnuProjRunnable: TPopupMenu; mnuProjRunnable: TPopupMenu;
mnuWatch: TPopupMenu; mnuWatch: TPopupMenu;
Splitter2: TSplitter; Splitter2: TSplitter;
Splitter3: TSplitter; Splitter3: TSplitter;
Splitter4: TSplitter; Splitter4: TSplitter;
asmList: TListView; lstAsm: TListView;
varListFlt: TListViewFilterEdit; varListFlt: TListViewFilterEdit;
procedure btnContClick(Sender: TObject); procedure btnContClick(Sender: TObject);
procedure btnVariablesClick(Sender: TObject); procedure btnVariablesClick(Sender: TObject);
@ -414,6 +414,7 @@ type
fLastFunction: string; fLastFunction: string;
fLastOffset: string; fLastOffset: string;
fLastLine: string; fLastLine: string;
procedure clearDisplays;
procedure updateMenu; procedure updateMenu;
procedure optionsChangesApplied(sender: TObject); procedure optionsChangesApplied(sender: TObject);
procedure disableEditor; procedure disableEditor;
@ -966,7 +967,6 @@ begin
fMsg:= getMessageDisplay; fMsg:= getMessageDisplay;
fLog := TStringList.Create; fLog := TStringList.Create;
fInspState := TInspectableCPU.Create(@setGpr, @setSsr, @setFlag, @setFpr); fInspState := TInspectableCPU.Create(@setGpr, @setSsr, @setFlag, @setFpr);
cpuVIewer.TIObject := fInspState;
fJson := TJsonObject.Create; fJson := TJsonObject.Create;
fStackItems := TStackItems.create; fStackItems := TStackItems.create;
fSubj:= TCEDebugObserverSubject.Create; fSubj:= TCEDebugObserverSubject.Create;
@ -1130,6 +1130,16 @@ begin
bmp.Free; bmp.Free;
end; end;
procedure TCEGdbWidget.clearDisplays;
begin
lstVariables.Clear;
lstCallStack.Clear;
lstThreads.Clear;
lstAsm.Clear;
cpuViewer.Clear;
cpuViewer.TIObject := nil;
end;
procedure TCEGdbWidget.optionsChangesApplied(sender: TObject); procedure TCEGdbWidget.optionsChangesApplied(sender: TObject);
begin begin
updateMenu; updateMenu;
@ -1304,7 +1314,7 @@ begin
btnReg.Enabled:=false; btnReg.Enabled:=false;
btnVariables.Enabled:=false; btnVariables.Enabled:=false;
btnStack.Enabled:=false; btnStack.Enabled:=false;
varList.Clear; clearDisplays;
end; end;
gsPaused: gsPaused:
begin begin
@ -1364,18 +1374,18 @@ var
begin begin
if varListFlt.Filter = '' then if varListFlt.Filter = '' then
exit; exit;
for i:= 0 to varList.Items.Count-1 do for i:= 0 to lstVariables.Items.Count-1 do
if AnsiContainsText(varList.Items[i].Caption, varListFlt.Filter) then if AnsiContainsText(lstVariables.Items[i].Caption, varListFlt.Filter) then
begin begin
varList.ItemIndex:=i; lstVariables.ItemIndex:=i;
varList.Selected.MakeVisible(false); lstVariables.Selected.MakeVisible(false);
break; break;
end; end;
end; end;
procedure TCEGdbWidget.disableEditor; procedure TCEGdbWidget.disableEditor;
begin begin
cpuVIewer.ItemIndex:=-1; cpuViewer.ItemIndex:=-1;
end; end;
procedure TCEGdbWidget.startDebugging; procedure TCEGdbWidget.startDebugging;
@ -1385,7 +1395,7 @@ var
i: integer; i: integer;
b: TPersistentBreakPoint; b: TPersistentBreakPoint;
begin begin
varList.Clear; clearDisplays;
if not fDbgRunnable and (fProj = nil) then if not fDbgRunnable and (fProj = nil) then
begin begin
dlgOkInfo('No project to debug', 'GDB commander'); dlgOkInfo('No project to debug', 'GDB commander');
@ -1452,7 +1462,6 @@ begin
bpkBreak: str := 'break ' + b.filename + ':' + intToStr(b.line) + #10; bpkBreak: str := 'break ' + b.filename + ':' + intToStr(b.line) + #10;
bpkWatch: {TODO-cGDB: put watchpoint from persistent}; bpkWatch: {TODO-cGDB: put watchpoint from persistent};
end; end;
fGdb.Input.Write(str[1], str.length); fGdb.Input.Write(str[1], str.length);
end; end;
// break on druntime exceptions + any throw' // break on druntime exceptions + any throw'
@ -1477,6 +1486,8 @@ begin
gdbCommand('-gdb-set mi-async on'); gdbCommand('-gdb-set mi-async on');
fGdb.OnReadData := @gdboutJsonize; fGdb.OnReadData := @gdboutJsonize;
// launch // launch
cpuViewer.TIObject := fInspState;
cpuViewer.RefreshPropertyValues;
gdbCommand('run >' + fOutputName + '< ' + fInputName); gdbCommand('run >' + fOutputName + '< ' + fInputName);
setState(gsRunning); setState(gsRunning);
end; end;
@ -1694,7 +1705,7 @@ procedure TCEGdbWidget.interpretJson;
var var
itm: TListItem; itm: TListItem;
begin begin
itm := asmList.FindCaption(0, fLastOffset, false, true, false); itm := lstAsm.FindCaption(0, fLastOffset, false, true, false);
if itm.isNotNil then if itm.isNotNil then
begin begin
itm.Selected:=true; itm.Selected:=true;
@ -1761,10 +1772,10 @@ begin
val := obj.Find('exp'); val := obj.Find('exp');
if val.isNotNil then if val.isNotNil then
begin begin
k := varList.FindCaption(0, val.AsString, false, true, false); k := lstVariables.FindCaption(0, val.AsString, false, true, false);
if k.isNotNil then if k.isNotNil then
begin begin
varList.ItemIndex:=k.index; lstVariables.ItemIndex:=k.index;
k.MakeVisible(false); k.MakeVisible(false);
end; end;
end; end;
@ -1938,7 +1949,7 @@ begin
// TODO-cGDB: get SSE registers // TODO-cGDB: get SSE registers
end; end;
end; end;
cpuVIewer.RefreshPropertyValues; cpuViewer.RefreshPropertyValues;
end; end;
val := fJson.Find('stack'); val := fJson.Find('stack');
@ -1979,9 +1990,9 @@ begin
val := fJson.Find('locals'); val := fJson.Find('locals');
if val.isNotNil and (val.JSONType = jtArray) then if val.isNotNil and (val.JSONType = jtArray) then
begin begin
j := varList.ItemIndex; j := lstVariables.ItemIndex;
varList.BeginUpdate; lstVariables.BeginUpdate;
varList.Clear; lstVariables.Clear;
arr := TJSONArray(val); arr := TJSONArray(val);
for i := 0 to arr.Count-1 do for i := 0 to arr.Count-1 do
begin begin
@ -1996,20 +2007,20 @@ begin
val := obj.Find('value'); val := obj.Find('value');
if val.isNil then if val.isNil then
continue; continue;
varList.AddItem(nme, nil); lstVariables.AddItem(nme, nil);
with varList.Items[varList.Items.Count-1] do with lstVariables.Items[lstVariables.Items.Count-1] do
SubItems.Add(val.AsString); SubItems.Add(val.AsString);
end; end;
if (j <> -1) and (j <= varList.Items.Count) then if (j <> -1) and (j <= lstVariables.Items.Count) then
varList.ItemIndex := j; lstVariables.ItemIndex := j;
varList.EndUpdate; lstVariables.EndUpdate;
end; end;
val := fJson.Find('asm_insns'); val := fJson.Find('asm_insns');
if val.isNotNil and (val.JSONType = jtArray) then if val.isNotNil and (val.JSONType = jtArray) then
begin begin
asmList.BeginUpdate; lstAsm.BeginUpdate;
asmList.Clear; lstAsm.Clear;
arr := TJSONArray(val); arr := TJSONArray(val);
for i := 0 to arr.Count-1 do for i := 0 to arr.Count-1 do
begin begin
@ -2022,18 +2033,18 @@ begin
val := obj.Find('inst'); val := obj.Find('inst');
if val.isNotNil then if val.isNotNil then
begin begin
asmList.AddItem(nme, nil); lstAsm.AddItem(nme, nil);
if nme = fLastOffset then if nme = fLastOffset then
asmList.Selected := asmList.Items[asmList.Items.Count-1]; lstAsm.Selected := lstAsm.Items[lstAsm.Items.Count-1];
if fOptions.autoDemangle then if fOptions.autoDemangle then
asmList.Items[asmList.Items.Count-1].SubItems.Add(demangle(val.AsString)) lstAsm.Items[lstAsm.Items.Count-1].SubItems.Add(demangle(val.AsString))
else else
asmList.Items[asmList.Items.Count-1].SubItems.Add(val.AsString); lstAsm.Items[lstAsm.Items.Count-1].SubItems.Add(val.AsString);
end; end;
end; end;
if asmList.Selected.isNotNil then if lstAsm.Selected.isNotNil then
asmList.Selected.MakeVisible(false); lstAsm.Selected.MakeVisible(false);
asmList.EndUpdate; lstAsm.EndUpdate;
selectAsmInstr; selectAsmInstr;
end; end;
@ -2269,9 +2280,9 @@ const
var var
nme: string; nme: string;
begin begin
if varList.ItemIndex = -1 then if lstVariables.ItemIndex = -1 then
exit; exit;
nme := varList.Items[varList.ItemIndex].Caption; nme := lstVariables.Items[lstVariables.ItemIndex].Caption;
gdbCommand(cmd[fAddWatchPointKind] + nme); gdbCommand(cmd[fAddWatchPointKind] + nme);
end; end;