瀏覽代碼

* fix several problems related to remote cross debugging

pierre 23 年之前
父節點
當前提交
4bb38c13dc
共有 1 個文件被更改,包括 31 次插入3 次删除
  1. 31 3
      ide/fpdebug.pas

+ 31 - 3
ide/fpdebug.pas

@@ -59,6 +59,7 @@ type
     procedure InsertBreakpoints;
     procedure RemoveBreakpoints;
     procedure ReadWatches;
+    procedure RereadWatches;
     procedure ResetBreakpointsValues;
     procedure DoDebuggerScreen;virtual;
     procedure DoUserScreen;virtual;
@@ -192,6 +193,7 @@ type
       procedure   Store(var S: TStream);
       procedure rename(s : string);
       procedure Get_new_value;
+      procedure Force_new_value;
       destructor done;virtual;
       expr : pstring;
     private
@@ -728,6 +730,19 @@ begin
     WatchesWindow^.Update;
 end;
 
+procedure TDebugController.RereadWatches;
+
+  procedure DoRead(PB : PWatch);
+  begin
+    PB^.Force_new_value;
+  end;
+
+begin
+  WatchesCollection^.ForEach(@DoRead);
+  If Assigned(WatchesWindow) then
+    WatchesWindow^.Update;
+end;
+
 
 procedure TDebugController.RemoveBreakpoints;
   procedure DoDelete(PB : PBreakpoint);
@@ -2560,7 +2575,11 @@ procedure TWatch.Get_new_value;
                inc(curframe);
                if not Debugger^.set_current_frame(curframe) then
                  loop_higher:=false;
+{$ifdef FrameNameKnown}
+               s2:='/x '+FrameName;
+{$else not  FrameNameKnown}
                s2:='/x $ebp';
+{$endif FrameNameKnown}
                getValue(s2);
                j:=pos('=',s2);
                if j>0 then
@@ -2626,6 +2645,12 @@ procedure TWatch.Get_new_value;
     GDBRunCount:=Debugger^.RunCount;
   end;
 
+procedure TWatch.Force_new_value;
+  begin
+    GDBRunCount:=-1;
+    Get_new_value;
+  end;
+
 destructor TWatch.Done;
   begin
     if assigned(expr) then
@@ -3872,7 +3897,7 @@ end;
     {$ifndef NODEBUG}
       Debugger^.Command('f '+IntToStr(Focused));
       { for local vars }
-      Debugger^.ReadWatches;
+      Debugger^.RereadWatches;
    {$endif}
       { goto source }
       inherited GotoSource;
@@ -3886,7 +3911,7 @@ end;
     {$ifndef NODEBUG}
       Debugger^.Command('f '+IntToStr(Focused));
       { for local vars }
-      Debugger^.ReadWatches;
+      Debugger^.RereadWatches;
    {$endif}
       { goto source/assembly mixture }
       InitDisassemblyWindow;
@@ -4250,7 +4275,10 @@ end.
 
 {
   $Log$
-  Revision 1.34  2002-11-21 00:37:56  pierre
+  Revision 1.35  2002-11-21 15:48:39  pierre
+   * fix several problems related to remote cross debugging
+
+  Revision 1.34  2002/11/21 00:37:56  pierre
    + some cross gdb enhancements
 
   Revision 1.33  2002/09/21 22:23:49  pierre