내 애플리케이션에서 strace를 사용하여 신호 번호를 어떻게 찾을 수 있나요?

내 애플리케이션에서 strace를 사용하여 신호 번호를 어떻게 찾을 수 있나요?

이것을 봐주세요애플리케이션에 어떤 신호가 존재하는지 알 수 있는 방법이 있습니까?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부팅 플래그를 받을 때 할 수도 있고, 전혀 하지 않을 수도 있습니다.

관련 정보