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]

Re: software single step


Daniel Jacobowitz wrote:
> 
> On Sun, Nov 03, 2002 at 08:54:12AM -0500, Stuart Hughes wrote:
> > 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);
> >     }
> >
[snip]
> >
> > Has anyone else seen this problem ? Does anyone know of a work around,
> > or a fix ?
> 
> gdbserver doesn't implement software single step; the connected GDB
> client handles it.  You may want to 'set debug target 1' and 'set debug
> remote 1', and watch for differences.


Hi Daniel,

I've investigted this further.  I tried the things you suggested, but
I'm finding it hard to correlate the output from the native sesion and
the remote session.  The native session outputs a a huge slew of output
before it first manages to control the inferior.

Looking at the ouput from the remote debugging session, it looks okay,
it seems to insert a breakpoint (I'm guessing, it writes 10300be5 to the
point to break at), and then continues.  When the inferior wakes up, it
sends back a 'T' packet.  I thought this should stop gdb, but it
doesn't.  The session carries on, without any user intervention until
the end of the program.

The code of the loop looks like this when disassembled:

    for ( i = 0; i < 10 ; i++ ) {
    84b0:       e3a03000        mov     r3, #0  ; 0x0
    84b4:       e50b3010        str     r3, [fp, -#16]
    84b8:       e51b3010        ldr     r3, [fp, -#16]
    84bc:       e3530009        cmp     r3, #9  ; 0x9
    84c0:       da000000        ble     84c8 <main+0x28>
    84c4:       ea000006        b       84e4 <main+0x44>
        printf("loop count = %d\n", i);
    84c8:       e59f0020        ldr     r0, [pc, #32]   ; 84f0
<main+0x50>
    84cc:       e51b1010        ldr     r1, [fp, -#16]
    84d0:       ebffff9d        bl      834c <_init+0x64>
    84d4:       e51b3010        ldr     r3, [fp, -#16]
    84d8:       e2833001        add     r3, r3, #1      ; 0x1
    84dc:       e50b3010        str     r3, [fp, -#16]
    84e0:       eafffff4        b       84b8 <main+0x18>
    }

I've attached the output captured from 'set debug remote' FYI.  


Do you have any suggestions where I could look next ?? 


Regards, Stuart
Script started on Mon Nov 11 16:10:03 2002
$ gdb hello
GNU gdb 5.2
Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-linux"...
0x40002980 in ?? ()
(gdb) b main
Breakpoint 1 at 0x84b0: file hello.c, line 7.
(gdb) set debug remote 1
(gdb) c
Continuing.
Sending packet: $Z0,4000ca4c,4#35...Ack
Packet received: 
Packet Z0 (software-breakpoint) is NOT supported
Sending packet: $m4000ca4c,4#ec...Ack
Packet received: 98040000
Sending packet: $X4000ca4c,0:#0d...Ack
Packet received: 
binary downloading NOT suppported by target
Sending packet: $M4000ca4c,4:01009fef#31...Ack
Packet received: OK
Sending packet: $m84b0,4#cb...Ack
Packet received: 0030a0e3
Sending packet: $M84b0,4:01009fef#10...Ack
Packet received: OK
Sending packet: $Hc0#db...Ack
Packet received: OK
Sending packet: $c#63...Ack
Packet received: T050b:e4fcffbf;0d:d4fcffbf;0f:b0840000;
Sending packet: $g#67...Ack
Packet received: 0100000014fdffbf1cfdffbf0000000024e7014014fdffbfe882000040d9004001000000a084000080071240e4fcffbfe8fcffbfd4fcffbff0d20340b08400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Sending packet: $m84b0,4#cb...Ack
Packet received: 01009fef
Sending packet: $m84b0,4#cb...Ack
Packet received: 01009fef
Sending packet: $m84a0,4#ca...Ack
Packet received: 0dc0a0e1
Sending packet: $m84a4,4#ce...Ack
Packet received: 00d82de9
Sending packet: $m84a8,4#d2...Ack
Packet received: 04b04ce2
Sending packet: $m84ac,4#fd...Ack
Packet received: 04d04de2
Sending packet: $m84b0,4#cb...Ack
Packet received: 01009fef
Sending packet: $m84b4,4#cf...Ack
Packet received: 10300be5
Sending packet: $m84b8,4#d3...Ack
Packet received: 10301be5
Sending packet: $m84bc,4#fe...Ack
Packet received: 090053e3
Sending packet: $m84c0,4#cc...Ack
Packet received: 000000da
Sending packet: $M4000ca4c,4:98040000#9b...Ack
Packet received: OK
Sending packet: $M84b0,4:0030a0e3#d1...Ack
Packet received: OK

Breakpoint 1, main () at hello.c:7
7	    for ( i = 0; i < 10 ; i++ ) {
(gdb) step
Sending packet: $m84b0,4#cb...Ack
Packet received: 0030a0e3
Sending packet: $m84b4,4#cf...Ack
Packet received: 10300be5
Sending packet: $M84b4,4:01009fef#14...Ack
Packet received: OK
Sending packet: $Hc0#db...Ack
Packet received: OK
Sending packet: $c#63...Ack
Packet received: T050b:e4fcffbf;0d:d4fcffbf;0f:b4840000;
Sending packet: $M84b4,4:10300be5#d9...Ack
Packet received: OK
Sending packet: $m84b4,4#cf...Ack
Packet received: 10300be5
Sending packet: $m4000ca4c,4#ec...Ack
Packet received: 98040000
Sending packet: $M4000ca4c,4:01009fef#31...Ack
Packet received: OK
Sending packet: $m84b0,4#cb...Ack
Packet received: 0030a0e3
Sending packet: $M84b0,4:01009fef#10...Ack
Packet received: OK
Sending packet: $m84b4,4#cf...Ack
Packet received: 10300be5
Sending packet: $g#67...Ack
Packet received: 0100000014fdffbf1cfdffbf0000000024e7014014fdffbfe882000040d9004001000000a084000080071240e4fcffbfe8fcffbfd4fcffbff0d20340b48400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Sending packet: $m84b8,4#d3...Ack
Packet received: 10301be5
Sending packet: $M84b8,4:01009fef#18...Ack
Packet received: OK
Sending packet: $Hc0#db...Ack
Packet received: OK
Sending packet: $c#63...Ack
Packet received: T050b:e4fcffbf;0d:d4fcffbf;0f:b8840000;
Sending packet: $M84b8,4:10301be5#de...Ack
Packet received: OK
Sending packet: $m84b8,4#d3...Ack
Packet received: 10301be5
Sending packet: $g#67...Ack
Packet received: 0100000014fdffbf1cfdffbf0000000024e7014014fdffbfe882000040d9004001000000a084000080071240e4fcffbfe8fcffbfd4fcffbff0d20340b88400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Sending packet: $m84bc,4#fe...Ack
Packet received: 090053e3
Sending packet: $M84bc,4:01009fef#43...Ack
Packet received: OK
Sending packet: $c#63...Ack
Packet received: T050b:e4fcffbf;0d:d4fcffbf;0f:bc840000;
Sending packet: $M84bc,4:090053e3#e1...Ack
Packet received: OK
Sending packet: $m84bc,4#fe...Ack
Packet received: 090053e3
Sending packet: $g#67...Ack
Packet received: 0100000014fdffbf1cfdffbf0000000024e7014014fdffbfe882000040d9004001000000a084000080071240e4fcffbfe8fcffbfd4fcffbff0d20340bc8400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Sending packet: $m84c0,4#cc...Ack
Packet received: 000000da
Sending packet: $M84c0,4:01009fef#11...Ack
Packet received: OK
Sending packet: $c#63...Ack
Packet received: T050b:e4fcffbf;0d:d4fcffbf;0f:c0840000;
Sending packet: $M84c0,4:000000da#cb...Ack
Packet received: OK
Sending packet: $m84c0,4#cc...Ack
Packet received: 000000da
Sending packet: $g#67...Ack
Packet received: 0100000014fdffbf1cfdffbf0000000024e7014014fdffbfe882000040d9004001000000a084000080071240e4fcffbfe8fcffbfd4fcffbff0d20340c08400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Sending packet: $m84c4,4#d0...Ack
Packet received: 060000ea
Sending packet: $M84c4,4:01009fef#15...Ack
Packet received: OK
Sending packet: $c#63...Ack
Packet received: T050b:e4fcffbf;0d:d4fcffbf;0f:c4840000;
Sending packet: $M84c4,4:060000ea#d6...Ack
Packet received: OK
Sending packet: $m84c4,4#d0...Ack
Packet received: 060000ea
Sending packet: $g#67...Ack
Packet received: 0f0000000f0000000f0000000a00000024e7014014fdffbfe882000040d9004001000000a084000080071240e4fcffbff0081240d4fcffbfd4840000c48400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Sending packet: $m84e4,4#d2...Ack
Packet received: 0030a0e3
Sending packet: $M84e4,4:01009fef#17...Ack
Packet received: OK
Sending packet: $c#63...Ack
Packet received: T050b:e4fcffbf;0d:d4fcffbf;0f:e4840000;
Sending packet: $M84e4,4:0030a0e3#d8...Ack
Packet received: OK
Sending packet: $m84e4,4#d2...Ack
Packet received: 0030a0e3
Sending packet: $g#67...Ack
Packet received: 0f0000000f0000000f0000000a00000024e7014014fdffbfe882000040d9004001000000a084000080071240e4fcffbff0081240d4fcffbfd4840000e48400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Sending packet: $m84e4,4#d2...Ack
Packet received: 0030a0e3
Sending packet: $m84e4,4#d2...Ack
Packet received: 0030a0e3
Sending packet: $m84a0,4#ca...Ack
Packet received: 0dc0a0e1
Sending packet: $m84a4,4#ce...Ack
Packet received: 00d82de9
Sending packet: $m84a8,4#d2...Ack
Packet received: 04b04ce2
Sending packet: $m84ac,4#fd...Ack
Packet received: 04d04de2
Sending packet: $m84b0,4#cb...Ack
Packet received: 01009fef
Sending packet: $m84b4,4#cf...Ack
Packet received: 10300be5
Sending packet: $m84b8,4#d3...Ack
Packet received: 10301be5
Sending packet: $m84bc,4#fe...Ack
Packet received: 090053e3
Sending packet: $m84c0,4#cc...Ack
Packet received: 000000da
Sending packet: $M4000ca4c,4:98040000#9b...Ack
Packet received: OK
Sending packet: $M84b0,4:0030a0e3#d1...Ack
Packet received: OK
10	    return 0;
(gdb) quit

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