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]

Re: sending CTRL-C to Cygwin gdb 6.8 has no effect


On Sunday 25 April 2010 15:09:22, John Cortell wrote:
> 1. I ruled out POSIX emulation in the inferior being a factor by 
> debugging a MinGW-built program. No change in behavior.CTRL-C to gdb 
> programatically has no effect.

Okay, at this point, we have some confusion in terminology.  When you
say "CTRL-C to GDB", I assume a CTRL_C_EVENT with
GenerateConsoleCtrlEvent.  Sending a SIGINT (Cygwin) signal is a
different story.  It is important that we understand exactly what
is what you're doing.

On Saturday 24 April 2010 23:29:21, John Cortell wrote:
> The call 
> specifies whether to launch it attached or not, and if attached, 
> whether to share the console. Fine, but that is between CDT's 
> launcher process and gdb, not gdb and the inferior.

But, is there a console to share at all?  Does the launcher
create one (even if hidden)?  Are you using "tty"/"set inferior-tty"
so GDB makes the inferior use it?

On Sunday 25 April 2010 15:09:22, John Cortell wrote:
> So, I decided to look at how we send the CTRL-C to gdb. If the 
> program spawned by our launcher is using the cygwin runtime dll, we 
> run  a 'kill -SIGINT <PID>'. In this case, the launched program is 
> cygwin's gdb, which does use the cygwin runtime, so that's what we 
> end up doing. And for sure, this command isn't interrupting either 
> gdb or the inferior. 

Looking at the code, this will not work with a Windows GDB in the case
of the inferior having been attaced to ("attach" vs "run").  Not even when
debugging a Cygwin inferior with a Cygwin GDB.  That works with native
debugging on linux (and other unixen), because those GDB ports install a
SIGINT handler that forwards the SIGINT to the inferior, whenever the
inferior is running.  This is all these set_sigint_trap calls do:

 >grep --exclude="ChangeLog*" set_sigint_trap *.c
 darwin-nat.c:      /* set_sigint_trap (); */
 inflow.c:/* Call set_sigint_trap when you need to pass a signal on to an attached
 inflow.c:set_sigint_trap (void)
 inf-ptrace.c:      set_sigint_trap ();
 inf-ttrace.c:      set_sigint_trap ();
 linux-nat.c:      set_sigint_trap ();
 linux-nat.c:  set_sigint_trap ();
 rs6000-nat.c:      set_sigint_trap ();
 spu-linux-nat.c:      set_sigint_trap ();       /* Causes SIGINT to be passed on to the


Note there's none in `windows-nat.c'.  I suppose that
if we added them to windows-nat.c, sending a real
Cygwin SIGINT to GDB would indeed forward it succesfully
the inferior, but iff the inferior is also a Cygwin
program.  It wouldn't work with a Cygwin GDB x MinGW
inferior, of course.

> 2. I added 'set new-console off' in the .gdbinit file (and confirmed 
> it took effect with a 'show new-console' at debug time). No change in behavior.

"off" is the default..

-- 
Pedro Alves


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