2011-01-30 17 views
1

私は、tmuxセッション内でgdb内のフォアグラウンドモードでデーモンアプリケーションをデバッグしています。このデーモンはSIGSEGVでクラッシュすることがあります。このクラッシュの結果はすぐには外界には明白ではないので、デーモンがクラッシュしたことを知るにはしばらく時間がかかるかもしれません。クラッシュが発生したときにすぐに何らかの通知を受けたいと思います。電子メールでも問題ありません。私はgdbの助けを借りなかった。どのように(もしあれば)これは達成されていますか?安くて醜いシグナル受信時にgdbに外部通知を送信するにはどうすればよいですか?

~ $ gdb --version 
GNU gdb (Gentoo 7.2 p1) 7.2 

答えて

0

これをしばらくすると解決したようです。 $ _exitcodeについてのヒントMake gdb quit automatically on successful termination?の答えの1つに私をパスに入れ、いくつかのグーグルがgdb hooksとなった。

これは私が今このアプリの.gdbinitのために持っているものです。ニースは、私は信号を区別することができますので、通常のkillコマンドは3つの怪物(tmux + gdb + app)から通常の完全な終了を与えますが、普通のものはgdbシェルに落として、診断するために私がtmuxに入るのを待ちます:

set $_exitcode = -999 
set height 0 
handle SIGTERM nostop print pass 
handle SIGPIPE nostop 
define hook-stop 
    if $_exitcode != -999 
     quit 
    else 
     shell echo | mail -s "NOTICE: app has stopped on unhandled signal" root 
    end 
end 
echo .gdbinit: running app\n 
run 
0

何か:

while sleep 30 ; ps auxw | grep progname | grep " t "` && mail -s CRASHED [email protected] < /etc/hostname ; done 

は、あなたはそれが一度だけメールしたい場合は、)その後、より多くの作業が行われるがあります。しかし、あなたがこれを殺すまで、30秒ごとに電子メールが送信されるのはちょっとしたことかもしれません。

関連する問題