Re: Build question

Danny Backx
2009-09-12T14:48:08Z

On Fri, 2009-09-11 at 16:22 +0100, Pedro Alves wrote:
> On Friday 11 September 2009 15:42:53, Danny Backx wrote:
> > Question : it looks like breaking a gdb-gdbserver session always kills
> > the inferior. Or at least it does so on my target. Has this been subject
> > of research yet ? I would expect it to be possible to detach without
> > killing the inferior, much like you can when debugging a linux process
> > from a linux gdb.
>
> What do you mean by breaking, and what do you mean by
> detaching? Please be specific.

Good question :-) Turns out I had not analysed my question sufficiently
before sending this mail.

What I was looking for is for gdbserver (and the inferior) to linger
after disconnecting gdb-gdbserver, until I reconnect to it with maybe
another gdb session.

Maybe my question is a bit too funky.

> Neither DebugActiveProcessStop nor DebugSetProcessKillOnExit were support
> by Windows CE up until version 5. I see that DebugActiveProcessStop
> was added to CE 6.0:

> Try checking if DebugActiveProcessStop is non-NULL here on
> your CE >= 6.0 device, and tweak this code to make it possible to detach
> with DebugActiveProcessStop even if we don't support
> DebugSetProcessKillOnExit.
>
> (In fact, I don't understand why DebugSetProcessKillOnExit is
> needed here. does Windows really kill a detached inferior when
> gdbserver exits _after_having_detached_from_it_?)

No, I don't see that. FYI see two examples below, both show both the gdb
and gdbserver session (they're on my screen in two xterms).

Scenario 1 : detach gdb (from gdbserver)
-> gdbserver appears to detach from inferior
-> gdbserver terminates
-> inferior continues to run

(gdb) target remote ebox:9999
Remote debugging using ebox:9999
(gdb) detach
Ending remote debugging.
(gdb)

\network\x86> gdbserver :9999 /network/x86/usedemo.exe
Process /network/x86/usedemo.exe created; pid = 88473610
Listening on port 9999
Remote debugging from host 172.17.1.10
Detaching from process 88473610
\network\x86> In main
Message from DLL
After DLL call

Scenario 2 : quit gdb
-> gdb tells gdbserver to terminate inferior
-> gdbserver terminates inferior
-> gdbserver terminates

(gdb) target remote ebox:9999
Remote debugging using ebox:9999
(gdb) q
A debugging session is active.

Inferior 1 [Remote target] will be killed.

Quit anyway? (y or n) y

\network\x86> gdbserver :9999 /network/x86/usedemo.exe
Process /network/x86/usedemo.exe created; pid = 92536842
Listening on port 9999
Remote debugging from host 172.17.1.10
Killing all inferiors
\network\x86>

Danny
--
Danny Backx ; danny.backx - at - scarlet.be ; http://danny.backx.info