Re: single-stepping remote target fails

Chad Phillips
2005-06-23T17:08:50Z

Ramana,

The output log follows.
----------------------------------------------------------
(gdb) target remote localhost:1000
Remote debugging using localhost:1000
Sending packet: $Hc-1#09...Ack
Packet received:
Sending packet: $qC#b4...Ack
Packet received:
Sending packet: $qOffsets#4b...Ack
Packet received:
Sending packet: $?#3f...Ack
Packet received: S00
Sending packet: $Hg0#df...Ack
Packet received:
Sending packet: $p40#d4...Ack
Packet received: 0000438C
Sending packet: $p0#a0...Ack
Packet received: 00801D8C
main () at main.c:159
159 while(!PITFlag)
(gdb) s
Sending packet: $p1#a1...Ack
Packet received: 00C70000
Sending packet: $m4180,2#98...Ack
Packet received: 24F0
Sending packet: $m4182,2#9a...Ack
Packet received: 007D
Sending packet: $m4184,2#9c...Ack
Packet received: 6681
Sending packet: $m4186,2#9e...Ack
Packet received: 0510

...(memory reads from 0x4188 through 0x4384)...

Sending packet: $m4386,2#a0...Ack
Packet received: 97A0
Sending packet: $m4388,2#a2...Ack
Packet received: F7F0
Sending packet: $m438a,2#cb...Ack
Packet received: 7F5E
Sending packet: $vCont?#49...Ack
Packet received:
Packet vCont (verbose-resume) is NOT supported
Sending packet: $Hc0#db...Ack
Packet received:
Sending packet: $s#73...Ack
Packet received: S00
Sending packet: $p40#d4...Ack
Packet received: 0000438E

Program received signal 0, Signal 0.
Sending packet: $p0#a0...Ack
Packet received: 00801D8C
0x0000438e in main () at main.c:159
159 while(!PITFlag)
(gdb)

----------------------------------------------------------
GDB never sends a 'Z1' packet to set a hardware breakpoint as part of
the step.

-Chad

Ramana Radhakrishnan wrote:
> On Thu, 2005-06-23 at 11:40 -0400, Chad Phillips wrote:
>
>> >On Thu, Jun 23, 2005 at 11:18:28AM -0400, Chad Phillips wrote:
>> >> Problem 1.
>> >> Single stepping in C source only steps by single machine instruction.
>> >> I had expected that GDB might try to set breakpoints on the next
>> >> instruction and then continue, but I see no such requests from GDB.
>> >> How does GDB cause single steps through C (any high level language)
>> >> source?
>> >It does hardware single steps until the source line of the $pc changes.
>>
>>Interesting. It makes no requests to set breakpoints. If I explicitly
>>set breakpoints, they work. But when I issue the step command, I get
>>no breakpoint commands at my proxy application from GDB. Any Ideas?
>
>
> Can your stub single step by itself without the debugger ? Guess you can
> do with the JTAG on. Does your remote stub support the single stepping
> packet ?
>
> In any case do a set debug remote 1 just before you single step and
> paste the output log over here. That could help answering.
>
> cheers
> Ramana
>
>
>
>
>> >> Problem 2.
>> >> When I issue the step command (or si, n, ni) to the target, GDB does
>> >> a _lot_ of memory reads. It reads from the start of main up to the
>> >> current PC (in main). What is it doing, and how can I make it stop?
>>
>> >Preumably it is doing prologue analysis. You need to work out (A) why
>> >it triggered the prolgoue analyzer and (B) whether you should be using
>> >unwind information instead of prologue analysis.
>>
>>Thanks. That make sense.
>>
>>-Chad
>
>
>