Problem
I was debugging a program, which suddenly died with
QFATAL : TestEdge::testSaveRemove() Received signal 11
For better understanding of the problem, it would be nice to know what the meaning of “signal 11” is.
Solution
I was not so fluent in signal numbers (maybe I should take a
course). Of course, I could dig in the signal(7)
man
page, or in the respective C header (signal.h
). However,
while digging in the manpages, I noticed that kill(1)
does not only
kill processes, but also does exactly what I want.[^1] Citing from the
man page:
-l, --list [signal]
List signal names. This option has optional argument, which
will convert signal number to signal name, or other way round.
[^1]: At least the version in Debian, which is from procps
So I could just say:
$ kill -l 11
SEGV
Ah, segmentation fault. Nice to know
In addition, the man page also mentions a useful parameter -L
, which
prints a nice table of signal numbers and mnemonics:
$ /bin/kill -L
1 HUP 2 INT 3 QUIT 4 ILL 5 TRAP 6 ABRT 7 BUS
8 FPE 9 KILL 10 USR1 11 SEGV 12 USR2 13 PIPE 14 ALRM
15 TERM 16 STKFLT 17 CHLD 18 CONT 19 STOP 20 TSTP 21 TTIN
22 TTOU 23 URG 24 XCPU 25 XFSZ 26 VTALRM 27 PROF 28 WINCH
29 POLL 30 PWR 31 SYS
(Also, the man page also warns about kill
probably being a shell
built-in. At least the Bash and zsh built-ins also know -l
, but not
-L
, so you have to call /bin/kill
explicitly.)