This is the mail archive of the
gdb@sourceware.org
mailing list for the GDB project.
GDB (not) handling SIGINT...?
- From: Paul Smith <paul at mad-scientist dot net>
- To: gdb at sourceware dot org
- Date: Tue, 13 Nov 2018 17:37:42 -0500
- Subject: GDB (not) handling SIGINT...?
- Reply-to: paul at mad-scientist dot net
Hi all; I'm using GDB 8.1 on a modern 64bit GNU/Linux system (Ubuntu
18.04LTS).
Recently I added a call to sigtimedwait() for SIGINT into my
(multithreaded) program and now I'm having an issue with GDB.
What I want is that if I attach to my program then continue, then use
^C at the GDB terminal, I should get a (gdb) prompt back but I do NOT
want the SIGINT delivered to my program to wake up my sigtimedwait()
call (because it will cause my program to do various things that I
don't want it to do).
I see that SIGINT is set to nopass:
(gdb) info signals SIGINT
Signal Stop Print Pass to program Description
SIGINT Yes Yes No Interrupt
but yet when I use ^C at the GDB prompt my sigtimedwait() call inside
my program does return with "2" (SIGINT), which I don't want.
I guess I don't understand what the docs mean when they say that the
signal is not passed to the process under debug. Note that in my case
I'm attaching to the program from a completely different terminal so
there's no issue with process groups etc. and as far as I can
understand it, the signal should only be delivered to GDB not my
process, so unless there's some weird magic at work here it must be GDB
forwarding that signal to my process.
Anyone have any thoughts about this?
Cheers!