1つのコマンドでgdb

1つのコマンドでgdb

引数を使用して実行可能ファイルをデバッグするときは、次のシーケンスを実行しますprogramarg1 arg2gdb

gdb
file ./program
run arg1 arg2
bt
quit

シェルスクリプトのコマンドラインで同じことをどのように実行できますか?

答え1

コマンドラインからオプションを使用してコマンドをgdbに渡すことができます-ex。各コマンドに対してこの操作を繰り返す必要があります。これは、プログラムが標準入力をリダイレクトせずに読み取る必要がある場合に便利です。例えば、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

答え2

標準入力でコマンドを入力できます。

#!/bin/sh
exec gdb -q <<EOF
file ./program
run arg1 arg2
bt
quit
EOF

または、コマンドを入力しafilegdbrunを使用することもできますgdb -batch -x afile。あるいは、クールなシェル改行(およびコーダーメンテナンス)を使用したくない場合は、すべての操作を1行で実行できます(heredocバージョンを表現する別の方法)。

gdb -q <<< "file ./program"$'\n'run$'\n'...

答え3

GDBコマンドラインからプログラムに引数を渡すにはgdb --args

gdb --args ./program arg1 arg2
bt

関連情報