[fpc-devel] gdb driving me nuts => it's starting a 2nd thread for no apparent reason....
Martin
lazarus at mfriebe.de
Mon Nov 8 23:59:30 CET 2010
Ok, anyone with an idea..
Attached is a simple program (appologies for the many commented lines,
but all logs refer to the lines as in this source, and I didn't want to
recreate the log yet another time)
Tested with various versions of gdb dwarf debug info (and IIRc (it's
been a lot of trying) also stabs). Mainly used todays triunk of fpc, but
the same with 2.4.0 (again IIRC)
In the log:
- lines with ">>" written to the debugger
- lines with "<<" read from the debugger
debugger started with this options:
gdb -silent -i mi -nx
the app pasically is
Program Foo;
procedure Test; begin writeln(); end;
begin
Test;
Test;
Test;
end;
- the output of writeln has no significance, and can even be commented away
- breakpoint is set on the first call to "Test"
then hit F8 (step-over) twice
- the first F8 stops (but for the wrong reason (should be
"*stopped,reason="end-stepping-range"..."
- the 2nd F8 cause a sigill
they apparently stop half into an instruction, which may be part of the
issue..
The biggest riddle is, why gdb says it's starting a 2nd thread?
(btw using gdb directly, same options, but piccking only the most
relevant commands from the log => not reproducible)
Below is the communication of the first "F8 step-over", before that the
breakpoint was hit, and some info queried (stack, etc).
All that is send is a single "-exec-next", yet a 2nd thread seems to get
started.
Strange too, the address at which it does hit the sig-trap...
>> TCmdLineDebugger.SendCmdLn "-exec-next"
<< TCmdLineDebugger.ReadLn "^running"
<< TCmdLineDebugger.ReadLn "*running,thread-id="1""
<< TCmdLineDebugger.ReadLn "(gdb) "
<< TCmdLineDebugger.ReadLn "=thread-created,id="2",group-id="1032""
[Debugger] Notify output: =thread-created,id="2",group-id="1032"
<< TCmdLineDebugger.ReadLn "~"[New Thread 1032.0x1774]\n""
[Debugger] Console output: ~"[New Thread 1032.0x1774]\n"
<< TCmdLineDebugger.ReadLn "*running,thread-id="all""
[DBGTGT] *
[DBGTGT] running,thread-id="all"
<< TCmdLineDebugger.ReadLn "~"[Switching to Thread 1032.0x1774]\n""
[Debugger] Console output: ~"[Switching to Thread 1032.0x1774]\n"
<< TCmdLineDebugger.ReadLn
"*stopped,reason="signal-received",signal-name="SIGTRAP",signal-meaning="Trace/breakpoint
trap",frame={addr="0x
771d8b2f",func="??",args=[]},thread-id="2",stopped-threads="all""
<< TCmdLineDebugger.ReadLn "=thread-selected,id="2""
[Debugger] Notify output: =thread-selected,id="2"
<< TCmdLineDebugger.ReadLn "(gdb) "
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: project1.lpr
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20101108/538e61df/attachment.ksh>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: debug_issue.log.txt
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20101108/538e61df/attachment.txt>
More information about the fpc-devel
mailing list