コアダンプの調査に、実行と解析を繰り返し行っていました……
「毎回ファイル名調べて、gdb実行するの超めんどい……」
ということで、簡単にgdbを実行するためのshellを作りました!
コアダンプのgdbを実行するshell
実行ファイルとコアダンプを指定すると、gdbを実行するshellです。
まずコレを、「~/bin/」とかに設置します。
#!/bin/bash # arg1: application file name # arg2: core dump file fullpath if [ $# -ne 2 ]; then echo 2 arguments are required. exit 0 fi app=$1 file=$2 gdb ${app} ${file}
これで
core a.out core.xxxx
みたいに実行すればgdbでコアダンプを開けます。
プロジェクトでコアダンプのgdbするshell
毎回2つ引数を渡すのも面倒なので、プロジェクト内に実行用shellを作ります。
#!/bin/sh file="" if [ "$1" = "" ]; then file=`ls -1t /var/core | sed -n 1P` else file=${1} fi echo "target file: ${file}" core a.out /var/core/${file}
これでこのshellを叩けば、勝手にコアダンプをgdbが開いてくれます。
ついでに引数としてコアダンプ名を渡すと、そのコアダンプファイルを開いてくれます。
この3つ(実質2つ)は固定値として指定しているので、設定や環境に応じて変更してください。
- ファイル取得先(/var/core)
- 実行ファイル(a.out)
- コアダンプの格納パス(/var/core/)
最新ファイル名を取得
プロジェクト用shellでファイル取得に使っている、対象パスの最新ファイル名を取得するコマンド。
$ ls -1t <検索条件> | sed -n 1P
「出力した最新のファイルを使ってゴニョゴニョする~」
ということをshellなどで簡略化したいとき、めっちゃ便利です。
あくまでlsで表示されたものの先頭を取得しているので、検索条件でフィルタをすれば
「対象パスの対象ファイルの最新ファイル名」
のような指定もできます。
参考
コチラを参考にしました。ありがとうございました!
あとがき
コアダンプ解析を実行するshellを作る方法でした!
コアダンプは出ないに越したことがないのですが、出ると
「どうやって調べるんだっけ?」
となったり
「毎回ファイル指定するのダルい……」
となるので、こういう大したことないけど何回もやる面倒なものは、簡略化するに限りますね。
よければ参考にしてみてくださいー!