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の実行。
シェルから実行している場合は、次のようにします。
% gdb myprogram
gdb> run params ... < input.txt
これはemacs内でも機能するようです。
いくつかの方法があります:
$ 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
で以前に設定された引数を使用します。
デバッグセッションを開始する際の完全性のために、-argsオプションもあります。すなわち)
gdb gdbarg1 gdbarg2 --args yourprog arg1 arg2 -x arg3
また、最初からデバッグする必要がない場合は、次を使用して既に実行中のプロセスにアタッチすることもできます。
$ gdb myprogram xxx
ここで、xxxはプロセスIDです。その場合、gdbに開始引数を伝える必要はありません。