我正在尝试使用 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>),但看起来如果发生崩溃,它不会t 将应用程序日志正确打印到文件或终端,并且脚本只是继续运行。此外,不知何故,来自 system.log 的 grep 并没有捕捉到崩溃。
在 Mac 上的 shell 脚本中监视和捕获应用程序崩溃的更好选择是什么?我在 Linux 上做过类似的测试,它们运行良好。
编辑:除了 shell 脚本之外,我也愿意就其他监控崩溃的方法提出建议。:-)