This is the mail archive of the gdb@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

software single step


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)


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]