私のアプリケーションで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フラグを受け取るときにすることも、まったくしないこともあります。

おすすめ記事