Como descobrir números de sinal usando strace em um aplicativo?

1

Por favor, dê uma olhada em existe uma maneira de saber se os sinais estão presentes em seu aplicativo e quais sinais existem? em que Stephen Kitt compartilhou uma solução -

strace -e trace=signal ...

agora só para saber, divirta-se, entenda que eu corri o comando como -

$] strace -e trace=signal qbittorrent

enquanto corri, recebi a saída como -

rt_sigaction(SIGRTMIN, {sa_handler=0x7faabe532bd0, sa_mask=[], sa_flags=SA_RESTORER|SA_SIGINFO, sa_restorer=0x7faabe53e0c0}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {sa_handler=0x7faabe532c60, sa_mask=[], sa_flags=SA_RESTORER|SA_RESTART|SA_SIGINFO, sa_restorer=0x7faabe53e0c0}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7faabd925030}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7faabd925030}, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7faabd925030}, 8) = 0
rt_sigaction(SIGPIPE, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7faabd925030}, {sa_handler=SIG_IGN, sa_mask=[PIPE], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7faabd925030}, 8) = 0
rt_sigaction(SIGINT, {sa_handler=0x5628b7cd2960, sa_mask=[INT], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7faabd925030}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGTERM, {sa_handler=0x5628b7cd2960, sa_mask=[TERM], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7faabd925030}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGABRT, {sa_handler=0x5628b7cd2b00, sa_mask=[ABRT], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7faabd925030}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0
rt_sigaction(SIGSEGV, {sa_handler=0x5628b7cd2b00, sa_mask=[SEGV], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7faabd925030}, {sa_handler=SIG_DFL, sa_mask=[], sa_flags=0}, 8) = 0

agora, como eu decido qual / qual número de sinal devo fornecer para fornecer uma melhor depuração ao mantenedor em caso de falha ou algo assim?

Ansioso para saber.

    
por shirish 25.07.2017 / 20:51

1 resposta

2

Você não pode, em geral.

A saída strace mostra quais sinais estão sendo manipulados, mas cabe a cada aplicativo como eles fazem (ou não) produzir saída de depuração. Talvez eles façam isso ao receber um SIGHUP, talvez em um SIGUSR1, ou talvez com um sinalizador de inicialização -D , ou talvez não em todos.

    
por 25.07.2017 / 22:57