対応したときの PR がこちらです。
差分で見ると、なにを追加したか見やすいと思います。
[Travis CI] core dump by srz-zumix · Pull Request #288 · srz-zumix/iutest
以下、ポイントを説明していきます。
導入
gdb のインストール
コアダンプファイルの出力設定
まず、コアダンプファイルが出力されるように ulimit の設定をします。
また、iutest ではテスト時に複数の実行ファイルを実行するため、コアダンプファイル名に実行ファイルの名前もつけるようにしています。
クラッシュしたらスタックトレースを出力する
実行ファイルの名前解決
linux - Core dump file name truncated - Stack Overflow%e だと 15 文字で truncate されてしまい、実行ファイル名が正しく取れなかったので以下のような対応をしました。
gdb で coredump 開くと実行ファイルがなんだったのか出力されるので、それを取得してます。
for f in `find . -maxdepth 1 -name "core_x_*"`; do COREFILE=${f} EXECFILE=${f##*/core_x_} if [ ! -f "${EXECFILE}" ]; then EXECFILE=`gdb -c "${COREFILE}" -batch | grep -o -e "\./[A-Za-z_]*"` fi gdb -c "${COREFILE}" ${EXECFILE} -ex "thread apply all bt" -ex "set pagination 0" -batch done
出力例
最後に
最近はローカル環境で実行確認することも減ってきたので CI 上でデバッグできるようにしておくのは便利でいいですね。
今回は以上です。
では。
0 件のコメント:
コメントを投稿