1

コマンドラインでいくつかの引数を取るプログラムをデバッグしようとしています。メインの内部では、次のように引数を出力します。

int main (int argc, char **argv)
{
 for (int i = 0; i < argc; i++) {
  printf("param%d=%s\n", i, argv[i]);
}

このように、gdbなしでプログラムを実行すると

"program img.jpg 1 2"

私は出力として得ます:

param0: program
param1: img.jpg
param2: 1
param3: 2

次のようにgdbで実行すると:

"program img.jpg 1 2"

私は得るだけ

param0: img.jpg

一方img.jpgでは param1 である必要があり、param2 と 3 も欠落しています。欠落している gdb にコマンド ライン パラメータを指定する特別な方法はありますか?

4

3 に答える 3

4

プログラムを実行するときにパラメーターを指定する必要があります。

まず、デバッガーを呼び出す必要があります

$ gdb <binary_file_name (executable)>

コマンドライン引数も渡してプログラムを開始するよりも:

(gdb) r p1 -p2 --p3 p4=p5

補足: このソリューションは、--argsフラグを使用するよりも柔軟だと思います。現在のインスタンスを終了せずに、さまざまなパラメーターを使用してプログラムを複数回起動できるからですgdb(たとえば、ブレークポイントを保持します)。

于 2012-07-24T12:15:07.160 に答える
1

--argsオプションを使用して、gdbデバッグ中のプログラムに引数を渡すように指示できます。

> gdb --args program img.jpg 1 2

gdbまたは、引数なしで起動してから、runコマンドに指定することもできます。

> gdb program
(gdb) run img.jpg 1 2
于 2012-07-24T12:17:57.960 に答える
1

gdbパラメータをではなく に送信していますprogram。パラメータを に渡すには、パラメータ forprogramを使用できます。--argsgdb

gdb --args program img.jpg 1 2
于 2012-07-24T12:17:24.183 に答える