* Wrong highlighted line while debugging fixed

+ Check if exe has debugging info
This commit is contained in:
pierre 2000-03-08 16:57:01 +00:00
parent eb652830aa
commit 3959ba67e3

View File

@ -35,7 +35,6 @@ type
HiddenStepsCount : longint;
{ no need to switch if using another terminal }
NoSwitch : boolean;
IsRunning : boolean;
RunCount : longint;
constructor Init(const exefn:string);
destructor Done;
@ -57,8 +56,9 @@ type
procedure UntilReturn;virtual;
procedure CommandBegin(const s:string);virtual;
procedure CommandEnd(const s:string);virtual;
function IsRunning : boolean;
function AllowQuit : boolean;virtual;
function GetValue(Const expr : string) : pchar;
function GetValue(Const expr : string) : pchar;
end;
BreakpointType = (bt_function,bt_file_line,bt_watch,bt_awatch,bt_rwatch,bt_invalid);
@ -491,6 +491,7 @@ end;
procedure UpdateDebugViews;
begin
DeskTop^.Lock;
If assigned(StackWindow) then
StackWindow^.Update;
If assigned(RegistersWindow) then
@ -499,6 +500,7 @@ procedure UpdateDebugViews;
Debugger^.ReadWatches;
If assigned(FPUWindow) then
FPUWindow^.Update;
DeskTop^.UnLock;
end;
constructor TDebugController.Init(const exefn:string);
@ -597,19 +599,24 @@ begin
NoSwitch:=DebuggeeTTY<>'';
{$endif win32}
{$ifdef linux}
{ Run the debugge in another tty }
{ Run the debuggee in another tty }
Command('set tty '+DebuggeeTTY);
NoSwitch:=DebuggeeTTY<>'';
{$endif win32}
{ Switch to user screen to get correct handles }
UserScreen;
inherited Run;
IsRunning:=true;
DebuggerScreen;
IDEApp.SetCmdState([cmResetDebugger,cmUntilReturn],true);
UpdateDebugViews;
end;
function TDebugController.IsRunning : boolean;
begin
IsRunning:=debuggee_started;
end;
procedure TDebugController.Continue;
begin
{$ifdef NODEBUG}
@ -683,7 +690,6 @@ procedure TDebugController.Reset;
begin
inherited Reset;
NoSwitch:=false;
IsRunning:=false;
IDEApp.SetCmdState([cmResetDebugger,cmUntilReturn],false);
ResetDebuggerRows;
end;
@ -766,7 +772,10 @@ begin
end
else
begin
W:=TryToOpenFile(nil,fn,0,Line,false);
if fn='' then
W:=nil
else
W:=TryToOpenFile(nil,fn,0,Line,false);
if assigned(W) then
begin
W^.Editor^.SetDebuggerRow(Line);
@ -782,12 +791,19 @@ begin
else
begin
Desktop^.UnLock;
Found:=IDEApp.OpenSearch(fn);
if fn='' then
Found:=false
else
Found:=IDEApp.OpenSearch(fn);
Desktop^.Lock;
if not Found then
begin
InvalidSourceLine:=true;
LastSource:=Nil;
{ Show the stack in that case }
InitStackWindow;
UpdateDebugViews;
StackWindow^.MakeFirst;
end
else
begin
@ -856,7 +872,6 @@ begin
#3'exitcode = %d'#13+
#3'hidden steps = %d',@P);
end;
IsRunning:=false;
end;
@ -2958,6 +2973,7 @@ end;
If not assigned(Debugger) then
exit;
{$ifndef NODEBUG}
DeskTop^.Lock;
Clear;
{ forget all old frames }
Debugger^.clear_frames;
@ -2969,17 +2985,34 @@ end;
begin
with Debugger^.frames[i]^ do
begin
AddItem(new(PMessageItem,init(0,GetPChar(function_name)+GetPChar(args),
AddModuleName(GetPChar(file_name)),line_number,1)));
if assigned(file_name) then
AddItem(new(PMessageItem,init(0,GetPChar(function_name)+GetPChar(args),
AddModuleName(GetPChar(file_name)),line_number,1)))
else
AddItem(new(PMessageItem,init(0,HexStr(address,8)+' '+GetPChar(function_name)+GetPChar(args),
AddModuleName(''),line_number,1)));
W:=SearchOnDesktop(GetPChar(file_name),false);
{ First reset all Debugger rows }
If assigned(W) then
W^.Editor^.SetDebuggerRow(-1);
end;
end;
{ Now set all Debugger rows }
for i:=0 to Debugger^.frame_count-1 do
begin
with Debugger^.frames[i]^ do
begin
W:=SearchOnDesktop(GetPChar(file_name),false);
If assigned(W) then
begin
W^.editor^.SetDebuggerRow(line_number);
If W^.Editor^.DebuggerRow=-1 then
W^.Editor^.SetDebuggerRow(line_number-1);
end;
end;
end;
if List^.Count > 0 then
FocusItem(0);
DeskTop^.Unlock;
{$endif}
end;
@ -3083,8 +3116,8 @@ var s : string;
i,p : longint;
{$endif DEBUG}
var
NeedRecompileExe : boolean;
cm : longint;
begin
{$ifdef DEBUG}
Assign(gdb_file,GDBOutFileName);
@ -3110,6 +3143,7 @@ begin
{$I+}
{$endif}
NeedRecompileExe:=false;
if TargetSwitches^.GetCurrSelParam<>source_os.shortname then
begin
cm:=ConfirmBox(#3'Sorry, can not debug'#13#3'programs compiled for '
@ -3122,11 +3156,31 @@ begin
begin
{ force recompilation }
PrevMainFile:='';
NeedRecompileExe:=true;
TargetSwitches^.SetCurrSelParam(source_os.shortname);
If DebugInfoSwitches^.GetCurrSelParam='-' then
DebugInfoSwitches^.SetCurrSelParam('l');
end;
end;
if (not ExistsFile(ExeFile)) or (CompilationPhase<>cpDone) or
(PrevMainFile<>MainFile) then
if not NeedRecompileExe then
NeedRecompileExe:=(not ExistsFile(ExeFile)) or (CompilationPhase<>cpDone) or
(PrevMainFile<>MainFile) or NeedRecompile(false);
if Not NeedRecompileExe and Not MainHasDebugInfo then
begin
cm:=ConfirmBox(#3'Warning, the program'#13#3'was compiled without'#13#3
+'debugging info.'#13#3
+'Recompile it?',nil,true);
if cm=cmCancel then
Exit;
if cm=cmYes then
begin
{ force recompilation }
PrevMainFile:='';
NeedRecompileExe:=true;
DebugInfoSwitches^.SetCurrSelParam('l');
end;
end;
if NeedRecompileExe then
DoCompile(cRun);
if CompilationPhase<>cpDone then
Exit;
@ -3270,7 +3324,11 @@ end.
{
$Log$
Revision 1.55 2000-03-07 21:52:54 pierre
Revision 1.56 2000-03-08 16:57:01 pierre
* Wrong highlighted line while debugging fixed
+ Check if exe has debugging info
Revision 1.55 2000/03/07 21:52:54 pierre
+ TDebugController.GetValue
Revision 1.54 2000/03/06 11:34:25 pierre