이것을 봐주세요애플리케이션에 어떤 신호가 존재하는지 알 수 있는 방법이 있습니까?Stephen Kitt는 이에 대한 솔루션을 공유했습니다.
strace -e trace=signal ...
이제 제가 실행하는 명령이 다음과 같다는 것을 재미있게 이해해 보시기 바랍니다.
$] strace -e trace=signal qbittorrent
내가 그것을 실행할 때, 내가 얻는 결과는 -
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
이제 충돌 등의 경우 유지관리자에게 더 나은 디버깅을 제공하기 위해 어떤 신호 번호를 제공해야 하는지 어떻게 결정합니까?
알기를 기대합니다.
답변1
일반적으로 말하면 할 수 없습니다.
strace 출력은 어떤 신호가 처리되고 있는지 보여주지만 디버그 출력을 생성하는 방법(또는 생성하지 않음)은 각 애플리케이션에 따라 다릅니다. 어쩌면 SIGHUP을 받을 때 할 수도 있고, SIGUSR1을 받을 때 할 수도 있고, -D
부팅 플래그를 받을 때 할 수도 있고, 전혀 하지 않을 수도 있습니다.