4

所以,当我运行我的程序时,我会

./a.out < SampleData

在仍然能够传入 SampleData 文件的同时,我将如何调试我的程序?

谢谢

编辑:我试着做

gdb ./a.out
run < SampleData

当我这样做时,它会运行我的程序,输出它通常输出的内容,然后给我留下:

“[Inferior 1 (process 19460) exited with code 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(),则它是您传递的值。这些值通常对于将有关您的程序是成功还是失败的信息传递给调用者(例如外壳程序)很有用。

我建议在 C 中检查EXIT_SUCCESSEXIT_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 回答