Martin wrote:
On 03/09/2011 14:26, Mark Morgan Lloyd wrote:
Martin wrote:
If it does not work for you, please open the "Debug output" window
from "view" / "debug windows" and check what command is sent to gdb.
I've been looking at this on various platforms. I can't easily test
Windows due to an apparent build problem, but on Linux and Solaris:
...
ARM (gtk2, emulated by Qemu, not susceptible to alignment errors):
Debugger access is erratic, works best if debug windows displayed
before program run. "Step into" (-> -exec-step-instruction) OK. "Step
Over" (-> -exec-next-instruction") OK. Assembler window shows tabs as \t.
Can you send a sample (from the debug output window) of what
data-disassemble returns? So I can see some data with \t
SPARC (gtk2): "Step into" (-> -exec-step-instruction) appears to step
over the next instruction if it's a call, however this appears to be
an artifact of the way calls work (i.e. with a mandatory nop
appended). "Step Over" (-> -exec-next-instruction") OK provided that
the above is taken into consideration. Assembler window shows tabs as \t.
Or send the output from this. Whichever , on e is enough.
This is from SPARC since I can run it natively- emulated ARM is a bit slow:
moonphase.pas:1345 Assert(test_jYear);
000825F4 7ffffcf1 call 0x819b8 <TEST_JYEAR>
000825F8 01000000 nop
000825FC 80a20000 cmp %o0, %g0
00082600 1280000d bne 0x82634 <MOONPHASE_init+472>
00082604 01000000 nop
00082608 01000000 nop
0008260C 9610001e mov %fp, %o3
00082610 94102541 mov 0x541, %o2
00082614 11000d2b sethi %hi(0x34ac00), %o0
00082618 90122118 or %o0, 0x118, %o0\t! 0x34ad18
<_$MOONPHASE$_Ld121>
0008261C 92100008 mov %o0, %o1
00082620 19000d2b sethi %hi(0x34ac00), %o4
00082624 98132128 or %o4, 0x128, %o4\t! 0x34ad28
<_$MOONPHASE$_Ld122>
00082628 9010000c mov %o4, %o0
First line is emboldened. Same code compiled with fpc -al -Sa
.Lj1041:
mov %i6,%o3
mov 1346,%o2
sethi %hi(_$MOONPHASE$_Ld121),%o0
or %o0,%lo(_$MOONPHASE$_Ld121),%o0
mov %o0,%o1
sethi %hi(_$MOONPHASE$_Ld122),%o4
or %o4,%lo(_$MOONPHASE$_Ld122),%o4
mov %o4,%o0
call FPC_ASSERT
nop
If "-exec-step-instruction" is sent, then it is a gdb issue. (Could be
debug-info encoding from fpc, if there is debug info for that. I don't
know if gdb would use that for single-instruction steps
Reliability in some cases might be improved by restarting Lazarus
after a debugging session, particularly if the target program hasn't
run to completion.
Try "Reset debugger" from menu "run". (Afaik, ctrl-F1)
Lazarus keeps gdb running. So if gdb is unstable, that may be an issue
Test case: ran to a breakpoint on the Assert() above, stepped one
assembler op, reset debugger. Ran to breakpoint again, assembler window
step buttons were greyed. Closed assembler window, reopened, buttons now
OK :-)
--
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk
[Opinions above are the author's, not those of his employers or colleagues]
--
_______________________________________________
Lazarus mailing list
[email protected]
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus