On Wed, Nov 23, 2016 at 10:03 PM, Brent W. Baccala <cos...@freesoft.org>
wrote:

>
> Any comments?
>

Well, yes, actually.  :-)

gdb's hurd target has a poorly documented command "set noninvasive".  I
don't completely understand it, but...

I'm starting to see the rational for an "invasive" debugging mode.
"Invasive" means that we debug by wrapping Mach ports - the task port needs
to be wrapped along with the exception ports.  "Non-invasive" means that we
rely on the C library in the program under test to provide some debugging
support.  No port wrapping is done.  Breakpoints, for example, work by
letting the program's message thread generate a SIGTRAP, which gets relayed
to the proc server and is presented to the debugger in response to a wait()
call.

Non-invasive is more efficient, but invasive is more reliable.

I'd code it myself, except that we've got the same old problem with
detaching a process when its ports are wrapped.  This shows, incidentally,
that adding a system call trace facility to the kernel isn't a complete
solution.  We don't just want to trace these messages - we want to
intercept them and only deliver them after a human being has had the chance
to inspect them at a debugger prompt.

    agape
    brent

Reply via email to