Marc Weustink wrote 5 lines
Martin wrote:
> I tried the below, with various versions of gdb on w32 / vista
>
> - gdb 6.8.3 / 7.0 / 7.0.50 / 7.1-2 / 7.2-1
> - you can comment out the writeln => no change
tried wit and without external linker -Xe
Show quoted text 10 lines
>
> set breakpoint on first call of "Test"
> then step twice with F8
>
> 2nd time F8 cause sig-ill
>
> disassembler window shows that either the pc is wrong, or some bad data
> was written there...
Whats the output of the debuggeroutput window ?
see below.
note the 2nd thread, no idea where that is from, but it seems the exec-continue goes to thread 2 ??
* first stop = breakpoint, that is correct.
* the first F8 is already suspicious. as it hits a signal => it should be:
*stopped,reason="end-stepping-range",.....
* 2nd F8 hit sigilll
*stopped,reason="signal-received",signal-name="SIGILL",signal-meaning="Illegal
instruction",frame={addr="0x004016cf",func="main",args=[],file="project1.lpr",fullname="C:/data/lazarus/bug2/project1.lpr",line="38"},thread-id="1",stopped-threads="all"
note the address, according to the assembler view (opened after the exception) this is in the middle of the call command ?
----
Full log:
(gdb)
*stopped,reason="breakpoint-hit",disp="keep",bkptno="6",frame={addr="0x004016c8",func="main",args=[],file="project1.lpr",fullname="C:/data/lazarus/bug2/project1.lpr",line="37"},thread-id="1",stopped-threads="all" (gdb)
<info program>
&"info program\n"
~"\tUsing the running image of child Thread 4192.0xdf4.\n" ~"Program stopped at 0x4016c8.\n"
~"It stopped at breakpoint 6.\n"
~"Type \"info stack\" or \"info registers\" for more information.\n" ^done
(gdb)
<-symbol-list-lines C:\data\lazarus\bug2\project1.lpr> ^done,lines=[{pc="0x00401680",line="10"},{pc="0x00401689",line="11"},{pc="0x004016b2",line="12"},{pc="0x004016b7",line="0"},{pc="0x004016c0",line="36"},{pc="0x004016c8",line="37"},{pc="0x004016cd",line="38"},{pc="0x004016d2",line="39"},{pc="0x004016d7",line="47"},{pc="0x004016de",line="0"}] (gdb)
<-stack-list-frames 0 0>
^done,stack=[frame={level="0",addr="0x004016c8",func="main",file="project1.lpr",fullname="C:/data/lazarus/bug2/project1.lpr",line="37"}] (gdb)
<-exec-next>
^running
*running,thread-id="1"
(gdb)
=thread-created,id="2",group-id="4192"
~"[New Thread 4192.0xe08]\n"
*running,thread-id="all"
~"[Switching to Thread 4192.0xe08]\n"
*stopped,reason="signal-received",signal-name="SIGTRAP",signal-meaning="Trace/breakpoint trap",frame={addr="0x771d8b2f",func="??",args=[]},thread-id="2",stopped-threads="all" =thread-selected,id="2"
(gdb)
<-exec-continue>
^running
*running,thread-id="all"
(gdb)
~"[Switching to Thread 4192.0xdf4]\n"
*stopped,reason="signal-received",signal-name="SIGTRAP",signal-meaning="Trace/breakpoint trap",frame={addr="0x004016ce",func="main",args=[],file="project1.lpr",fullname="C:/data/lazarus/bug2/project1.lpr",line="38"},thread-id="1",stopped-threads="all" =thread-selected,id="1"
(gdb)
<-exec-next>
^running
*running,thread-id="all"
(gdb)
=thread-exited,id="2",group-id="4192"
*stopped,reason="signal-received",signal-name="SIGILL",signal-meaning="Illegal instruction",frame={addr="0x004016cf",func="main",args=[],file="project1.lpr",fullname="C:/data/lazarus/bug2/project1.lpr",line="38"},thread-id="1",stopped-threads="all" (gdb)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: assembler.png
Type: image/png
Size: 28960 bytes
Desc: not available
URL: <http://lists.lazarus.freepascal.org/pipermail/lazarus/attachments/20101108/586f6d11/attachment-0001.png>