从标准输入c传入文件时运行gdb

时间:2013-03-10 00:26:14

标签: c

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

./a.out < SampleData

如何在仍能传递SampleData文件的同时调试我的程序?

由于

编辑:我试过

gdb ./a.out
run < SampleData

当我这样做时,它运行我的程序,输出它通常输出的内容,然后离开我:

“[Inferior 1(过程19460)退出,代码为03]”

什么?

3 个答案:

答案 0 :(得分:6)

您也可以在gdb内部进行重定向。

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

基于更新的编辑:

本文:

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

是来自gdb本身的消息。 Inferior是由gdb调试的进程的名称。这里只有1个(但可能不止一个)。退出代码是程序终止的代码。如果您的main()函数已完成,则它返回的值。如果你打电话给exit(),那就是你传递的价值。这些值通常可用于传递有关程序是否成功或失败返回调用方(例如shell)的信息。

我建议在C中检查EXIT_SUCCESSEXIT_FAILURE(分别表示成功/失败的运行)。许多程序定义了额外的退出代码来指示特定的错误。

由于这里的值是03,这是一个不寻常的退出代码,我建议你的main()最后可能缺少一个返回语句?

答案 1 :(得分:1)

gdb --args ./a.out < SampleData

答案 2 :(得分:0)

在GDB中使用run命令时,可以使用普通输入重定向:

$ gdb ./a.out
(gdb) run < SampleData