diff --git a/ide/fpdebug.pas b/ide/fpdebug.pas
index c7f6d2c7e6..a4caf9b9b5 100644
--- a/ide/fpdebug.pas
+++ b/ide/fpdebug.pas
@@ -1090,11 +1090,16 @@ begin
 end;
 
 procedure TDebugController.Reset;
+var
+  old_reset : boolean;
 begin
   inherited Reset;
   { we need to free the executable
     if we want to recompile it }
+  old_reset:=reset_command;
+  reset_command:=true;
   SetExe('');
+  reset_command:=old_reset;
   NoSwitch:=false;
   { In case we have something that the compiler touched }
   If IDEApp.IsRunning then
@@ -3732,6 +3737,9 @@ begin
 {$endif def GDBWINDOW}
 end;
 
+const
+  Invalid_gdb_file_handle: boolean = false;
+
 
 procedure DoneDebugger;
 begin
@@ -3752,7 +3760,20 @@ begin
   If Use_gdb_file then
     begin
       Use_gdb_file:=false;
+{$IFOPT I+}
+  {$I-}
+  {$DEFINE REENABLE_I}
+{$ENDIF}
       Close(GDB_file);
+      if ioresult<>0 then
+        begin
+          { This handle seems to get lost for DJGPP
+            don't bother too much about this. }
+          Invalid_gdb_file_handle:=true;
+        end;
+{$IFDEF REENABLE_I}
+  {$I+}
+{$ENDIF}
     end;
   If IDEApp.IsRunning then
     PopStatus;