標準入力を読み取り、gdbでパラメータを取得するプログラムを読み込む方法
-
19-08-2019 - |
質問
から入力を受け取るプログラムがあります stdinそしてまたいくつかのパラメータを取ります コマンドラインから。次のようになります。
cat input.txt > myprogram -path "/home/user/work"
gdbでコードをデバッグしようとしています emacsの内部で、M-x gdbにより、 次のコマンドでプログラムをロードします。
gdb cat input.txt > myprogram -path "/home/user/work"
ただし、gdbはそれを好みません。
こちらから質問が寄せられました。
残念ながら、私は解決策を理解しておらず、-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に開始引数を伝える必要はありません。
所属していません StackOverflow