4

だから、私が自分のプログラムを実行するとき、私はします

./a.out < SampleData

SampleDataファイルを渡すことができる状態で、プログラムをデバッグするにはどうすればよいですか?

ありがとう

編集:やってみた

gdb ./a.out
run < SampleData

私がそれをするとき、それは私のプログラムを実行し、それが通常出力するものを出力し、そして私に以下を残します:

「[劣った1(プロセス19460)はコード03で終了しました]」

何?

4

3 に答える 3

6

gdb 内でリダイレクトを行うこともできます。

gdb a.out
# ...
(gdb) run < SampleData

更新に基づく編集:

このテキスト:

[Inferior 1 (process 19460) exited with code 03]

自分からのメッセージgdbです。Inferior は、 によってデバッグされているプロセスに付けられた名前gdbです。ここでは、1 つだけです (ただし、複数存在する可能性があります)。終了コードは、プログラムが終了したコードです。関数が完了した場合main()、それが返された値です。を呼び出した場合はexit()、渡した値です。これらの値は、多くの場合、プログラムが成功したか失敗したかに関する情報を呼び出し元 (シェルなど) に渡すのに役立ちます。

EXIT_SUCCESSおよびC で確認することをお勧めEXIT_FAILUREします (それぞれ実行の成功/失敗を示します)。多くのプログラムでは、特定のエラーを示すために追加の終了コードを定義しています。

ここの値は であり03、これは通常とは異なる終了コードmain()であるため、最後に return ステートメントがない可能性があります。

于 2013-03-10T00:29:20.410 に答える
1
gdb --args ./a.out < SampleData
于 2013-03-10T00:28:51.210 に答える
0

GDB でコマンドを使用runする場合、通常の入力リダイレクトを使用できます。

$ gdb ./a.out
(gdb) run < SampleData
于 2013-03-10T00:29:47.057 に答える