web-dev-qa-db-ja.com

標準入力を読み取り、gdbでパラメータを取得するプログラムを読み込む方法

Stdinから入力を受け取り、コマンドラインからいくつかのパラメーターを受け取るプログラムがあります。次のようになります。

cat input.txt > myprogram -path "/home/user/work"

Emacs内でgdbを使用してコードをデバッグしようとしています。M-xgdbを使用して、次のコマンドでプログラムをロードしようとしています。

gdb cat input.txt > myprogram -path "/home/user/work"

ただし、gdbはそれを好みません。

here からの質問。残念ながら、私は解決策を理解しておらず、-gオプションおよびコマンドM-x gdbの実行。

93
vinc456

シェルから実行している場合は、次のようにします。

% gdb myprogram
gdb> run params ... < input.txt

これはemacs内でも機能するようです。

119
Alnitak

いくつかの方法があります:

$ gdb myprogram
(gdb) r -path /home/user/work < input.txt

または

$ gdb myprogram
(gdb) set args -path /home/user/work < input.txt
(gdb) r

または

$ gdb -ex 'set args -path /home/user/work < input.txt' myprogram
(gdb) r

ここで、gdb runコマンド(r)は、デフォルトで、set argsで以前に設定された引数を使用します。

27
maxschlepzig

デバッグセッションを開始する際の完全性のために、-argsオプションもあります。すなわち)

gdb gdbarg1 gdbarg2 --args yourprog arg1 arg2 -x arg3
7
vinc456

また、最初からデバッグする必要がない場合は、次を使用して既に実行中のプロセスにアタッチすることもできます。

$ gdb myprogram xxx

ここで、xxxはプロセスIDです。その場合、gdbに開始引数を伝える必要はありません。

0
Zitrax