This is the mail archive of the gdb@sourceware.org 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]

Behaviour of default all-stop mode


The foll. are w.r.to remote debugging in gdb 6.8 cross-compiled for mips64.

In the default all-stop mode,

1) The document says, "whenever your program stops under GDB for any reason,all threads of execution stop, not just the current thread"
-- Here, the initiation is done by gdb or the (remote) stub should take care of this ?
Suppose three threads are running, say 1, 2, & 3.
Suppose thread 1 hits the breakpoint; It'll send the status to gdb; At this point, gdb itself will send (further) packets to stop other threads, or the stub itself should take the initiative to stop other threads ?

2) The document says, "whenever you restart the program, all threads start executing".
-- Again, the gdb takes initiative to continue all the threads or the stub should have a mechanism to do this ?
Suppose three threads, 1, 2, & 3 are in a stopped state.
Now, "continue" from thread 1 will continue all the threads ?
When I checked the packets, I found that it does only "Hc1" to set the further continue packets only for thread 1.
Ideally, what I expected is, gdb will take care of continuing all the  threads, something like this (assuming no breakpoints set in any of the threads ):

<gdb-thread1> continue
Sending packet: $Hc1#xx...Ack
Packet received: OK
Sending packet: $c#63...Ack
Sending packet: $Hc2#xx...Ack
Packet received: OK
Sending packet: $c#63...Ack
Sending packet: $Hc3#xx...Ack
Packet received: OK
Sending packet: $c#63...Ack

gdb can even do this in a simpler way, as just:
<gdb-thread1> continue
Sending packet: $Hc-1#xx...Ack
Packet received: OK
Sending packet: $c#63...Ack

since the '-1' in "Hc-1" indicates 'all threads'.

But, it does neither of this, and does something like this:
<gdb-thread1> continue
Sending packet: $Hc1#xx...Ack
Packet received: OK
Sending packet: $c#63...Ack
Sending packet: $Hc0#xx...Ack
Sending packet: $c#63...Ack

But '0' in "Hc0" indicates 'any thread'; Should the stub take this as an indication to continue all the threads ?

The document does not clearly explain whether the initiative, to stop all the threads once a thread hits a break and to continue all the threads if a continue is given from a thread, is the responsibility of gdb or stub, and how. And an inspection of gdb's packets sent to stub throw no light either.

Can someone clarify ?


Thanks,
Suresh


-- 
Be Yourself @ mail.com!
Choose From 200+ Email Addresses
Get a Free Account at www.mail.com


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