> On 20/07/14 15:47, Joost van der Sluis wrote:
> I haven't seen the spurious SIGSEGV for a while, so maybe that is fixed. 
> I am still seeing the spurious leaving of a routine on pressing step 
> into on one particular begin, but mostly it looks good - I think it is 
> rather faster than the gdb debugger.

It's not that strange it's faster then the gdb-debugger, as gdb is an external 
application from which the output is parsed.

The step-into-next-line code is quite complicated. Just single-stepping until 
another procedure with line-info has been hit is too slow. So it uses 
watchpoints on the stack, so that the debuggee stops when a new procedure is 
being called, or the current procedure has ended. Then it compares the 
line-info with the line-info at the start of the step-into-next-line. It is 
very well possible that for some reason the start of the procedure is ignored, 
so that it immediately steps to the end of the procedure.

Can you create a small test-application with a procedure that has this problem? 
With some steps to reproduce?

If you want to look at it yourself, look at the TDbgControllerStepIntoLineCmd 
class in fpdbgcontroller.pas. The DoContinue function is called when the 
debuggee has to start running again.  When the debuggee stops running, 
ResolveEvent is being called. ResolveEvent has to set Finished to true if the 
command has finished. If Finished is set to false, DoContinue is called again, 
and the debuggee continues running.

> Not sure about the spurious step - I notice on some routines stepping 
> steps to the end line sometimes and then back into the routine. Perahps 
> it is related to this?

Do you have an example? It could be that the execution point really jumps 
up-and-down, or that the debug-info gives some strange results. 

Joost.
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus

Reply via email to