いくつかの入力方法でアプリケーションを開くために使用される bash スクリプトを使用して、Mac OS X Mountain Lion でアプリケーションをデバッグしようとしています。エラー信号が発生した場合(set -eなし)、何が起こったのかを簡単に説明してスクリプトの実行を終了したいと思いますが。
スクリプトは次のように構成されます。
#!/bin/bash
#
...
while true
do
for input in $INPUTS
do
/path/to/app $input 2> mylog.log &
sleep 2
tail -2 /private/var/log/system.log | grep $ERROR &&
echo $input &&
exit 1;
test $? -gt 127 &&
echo $input &&
exit 2;
# nothing happened, kill the app and continue with a new test
pkill -9 app
done
done
そして、手動で送信してスクリプトをデバッグしようとしました
pkill -SIGSEGV app
ターミナルで。出力をコマンド ライン (したがって app コマンドの '&') とログ ファイル (2>) に出力するスクリプトを取得しようとしていますが、クラッシュが発生した場合はそうではないようです 'アプリケーションログをファイルにも端末にも適切に出力しないと、スクリプトは実行され続けます。また、どういうわけか、system.log からの grep がクラッシュをキャッチしません。
Mac のシェル スクリプトでアプリケーションのクラッシュを監視してキャッチするためのより良いオプションは何でしょうか? Linux で同様のテストを行ったところ、問題なく動作しました。
編集:シェルスクリプト以外のクラッシュを監視するための他の方法についての提案も受け付けています。:-)