This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: GDB Ctrl-C Interrupt Fails WORKAROUND
- From: Pedro Alves <pedro_alves at portugalmail dot pt>
- To: cygwin at cygwin dot com
- Date: Thu, 01 Mar 2007 00:15:12 +0000
- Subject: Re: GDB Ctrl-C Interrupt Fails WORKAROUND
- References: <E5AED0BA-EE62-4D97-96CE-8A96D0C0F559@qualcomm.com> <37FD7E0C-3F61-4EB2-B5A2-9C86C87A45DA@qualcomm.com> <20060615150456.GA7830@trixie.casa.cgf.cx> <20070228234326.GD9444@ns1.anodized.com>
Christopher Layne escreveu:
On Thu, Jun 15, 2006 at 11:04:56AM -0400, Christopher Faylor wrote:
I'm happy for you that CTRL-C works for you. It does not work for me.
I'm almost never running gdb from a genuine DOS command prompt.
Sometimes via ssh, sometimes via a terminal emulator. CTRL-C doesn't
work in those.
Also, if you have "tty" in your CYGWIN variable it doesn't work even
>from a DOS command prompt.
Which is exactly what I theorized above. So, characterizing CTRL-C as
not working in gdb is rather an overstatement without more details.
Now you know that you can use a standard console window for debugging
and all will be well.
Lacking the ability to interrupt a running program severely limits
gdb's usefulness. Fortunately there's a workaround available.
Yep. Use a console window.
Is there a reason DebugBreakProcess can't be used from inside
gdb if sending a ctrl-c with GenerateConsoleCtrlEvent (CTRL_C_EVENT, pid)
doesn't work?
Where in the cygwin source tree would the best place be to look for
where SIGINT handling is being done at the tty/pty level so that I can
remove this pointless limitation from my builds?
See gdb/win32-nat.c:win32_stop
and also:
http://sourceware.org/ml/gdb-patches/2007-02/msg00294.html
Look for win32_send_signal in the patch.
Note that DebugBreakProcess only exists on XP or Windows 2003
server onwards. For WinNT < XP, it should be possible to simulate
it with CreateRemoteThread with entry point set to
DebugBreak or something similar. The worst case would be that a dll
would have to be injected to load a function that does the
DebugBreak in the debuggee's address space.
Cheers,
Pedro Alves
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/