This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
software single step
- From: Stuart Hughes <seh at zee2 dot com>
- To: gdb <gdb at sources dot redhat dot com>
- Date: Sun, 03 Nov 2002 08:54:12 -0500
- Subject: software single step
- Organization: Zee2 Ltd
Hi,
I'm trying to use gdb/gdbserver to debug a strong-arm target. I'm
having problems with single stepping. If I try to step into the loop
shown below, it simply runs on printing all 10 loop iterations.
for ( i = 0; i < 10 ; i++ ) {
printf("loop count = %d\n", i);
}
If I disassemble, the problem seems to be the branch instructions, the
loop control looks like:
0x83c4 <main+36>: cmp r3, #9 ; 0x9
0x83c8 <main+40>: ble 0x83d0 <main+48>
0x83cc <main+44>: b 0x83ec <main+76>
0x83d0 <main+48>: ldr r0, [pc, #60] ; 0x8414 <main+116>
To investigate this further, I built a "native" gdb for the strong-arm
from the same code gdb code base. This worked correectly, I was able to
step into and control the flow through the loop.
It seems as though the problem is that gdbserver is implementing
software_single_step differently to a "native" gdb.
Has anyone else seen this problem ? Does anyone know of a work around,
or a fix ?
TIA, Stuart.
BTW: my environment is:
gdb/gdbserver - 5.2 or 5.3 CVS (same behaviour)
linux - 2.4.18
gcc - 2.95.3 or 3.1 (same behaviour)