実行可能ファイルprogram
を引数付きでデバッグするときarg1 arg2
をgdb
付きでデバッグするとき、次のシーケンスを実行します
gdb
file ./program
run arg1 arg2
bt
quit
シェルスクリプトの1つのコマンドラインから同じようにするにはどうすればよいですか?
オプション-ex
を使用して、コマンドラインでgdbにコマンドを渡すことができます。コマンドごとにこれを繰り返す必要があります。これは、プログラムがstdinを読み取る必要があるため、リダイレクトしたくない場合に役立ちます。たとえば、od -c
echo abc |
gdb -ex 'break main' -ex 'run -c' -ex bt -ex cont -ex quit od
したがって、特にあなたの質問には、次のように使用できます。
gdb -ex 'run arg1 arg2' -ex bt -ex quit ./program
コマンドは標準入力に入力できます。
#!/bin/sh
exec gdb -q <<EOF
file ./program
run arg1 arg2
bt
quit
EOF
または、コマンドをafile
およびgdb
run with gdb -batch -x afile
に配置するか、または改行(およびメンテナンスコーダー)がファンシーなシェルで嫌いな場合は、すべてを単一行(ヒアドキュメントバージョンを表す別の方法):
gdb -q <<< "file ./program"$'\n'run$'\n'...