mirror of https://gitlab.com/basile.b/dexed.git
fix #116 - Synchronization issues between breakpoints database and editor cache
This commit is contained in:
parent
fa231de8c7
commit
d4c068d483
|
@ -479,6 +479,7 @@ type
|
||||||
procedure killGdb;
|
procedure killGdb;
|
||||||
procedure storeObserversBreakpoints;
|
procedure storeObserversBreakpoints;
|
||||||
procedure updateDebugeeOptionsEditor;
|
procedure updateDebugeeOptionsEditor;
|
||||||
|
procedure synchronizeBreakpointsFromDoc;
|
||||||
// GDB output processors
|
// GDB output processors
|
||||||
procedure gdboutQuiet(sender: TObject);
|
procedure gdboutQuiet(sender: TObject);
|
||||||
procedure gdboutJsonize(sender: TObject);
|
procedure gdboutJsonize(sender: TObject);
|
||||||
|
@ -730,7 +731,6 @@ end;
|
||||||
|
|
||||||
destructor TPersistentBreakPoints.destroy;
|
destructor TPersistentBreakPoints.destroy;
|
||||||
begin
|
begin
|
||||||
if fItems.Count > 0 then
|
|
||||||
saveToFile(getCoeditDocPath + bpFname);
|
saveToFile(getCoeditDocPath + bpFname);
|
||||||
fItems.Free;
|
fItems.Free;
|
||||||
inherited;
|
inherited;
|
||||||
|
@ -1362,6 +1362,7 @@ procedure TCEGdbWidget.docFocused(document: TCESynMemo);
|
||||||
begin
|
begin
|
||||||
fDoc := document;
|
fDoc := document;
|
||||||
updateDebugeeOptionsEditor;
|
updateDebugeeOptionsEditor;
|
||||||
|
synchronizeBreakpointsFromDoc;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCEGdbWidget.docChanged(document: TCESynMemo);
|
procedure TCEGdbWidget.docChanged(document: TCESynMemo);
|
||||||
|
@ -1761,6 +1762,46 @@ begin
|
||||||
opt := fDebugeeOptions.projectByFile[nme];
|
opt := fDebugeeOptions.projectByFile[nme];
|
||||||
dbgeeOptsEd.TIObject := opt;
|
dbgeeOptsEd.TIObject := opt;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TCEGdbWidget.synchronizeBreakpointsFromDoc;
|
||||||
|
var
|
||||||
|
i: integer;
|
||||||
|
c: integer;
|
||||||
|
j: integer;
|
||||||
|
l: integer;
|
||||||
|
k: TBreakPointKind;
|
||||||
|
s: string;
|
||||||
|
b: boolean;
|
||||||
|
f: ICEDebugObserver;
|
||||||
|
begin
|
||||||
|
if fDoc.isNil then
|
||||||
|
exit;
|
||||||
|
f := fDoc as ICEDebugObserver;
|
||||||
|
if not assigned(f) then
|
||||||
|
exit;
|
||||||
|
c := f.debugQueryBpCount;
|
||||||
|
if c <> 0 then
|
||||||
|
begin
|
||||||
|
for i := fBreakPoints.count-1 downto 0 do
|
||||||
|
begin
|
||||||
|
b := false;
|
||||||
|
if not (fBreakPoints[i].filename = fDoc.fileName) then
|
||||||
|
continue;
|
||||||
|
for j := 0 to c-1 do
|
||||||
|
begin
|
||||||
|
f.debugQueryBreakPoint(j, s, l, k);
|
||||||
|
if l = fBreakPoints[i].line then
|
||||||
|
begin
|
||||||
|
b := true;
|
||||||
|
break;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if not b then
|
||||||
|
fBreakPoints.items.Delete(i);
|
||||||
|
end;
|
||||||
|
end
|
||||||
|
else fBreakPoints.clearFile(fDoc.fileName);
|
||||||
|
end;
|
||||||
{$ENDREGION}
|
{$ENDREGION}
|
||||||
|
|
||||||
{$REGION GDB output processors -------------------------------------------------}
|
{$REGION GDB output processors -------------------------------------------------}
|
||||||
|
|
Loading…
Reference in New Issue