所以,当我运行我的程序时,我会
./a.out < SampleData
如何在仍能传递SampleData文件的同时调试我的程序?
由于
编辑:我试过
gdb ./a.out
run < SampleData
当我这样做时,它运行我的程序,输出它通常输出的内容,然后离开我:
“[Inferior 1(过程19460)退出,代码为03]”
什么?
答案 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_SUCCESS
和EXIT_FAILURE
(分别表示成功/失败的运行)。许多程序定义了额外的退出代码来指示特定的错误。
由于这里的值是03
,这是一个不寻常的退出代码,我建议你的main()
最后可能缺少一个返回语句?
答案 1 :(得分:1)
gdb --args ./a.out < SampleData
答案 2 :(得分:0)
在GDB中使用run
命令时,可以使用普通输入重定向:
$ gdb ./a.out
(gdb) run < SampleData