2013-04-04 98 views
0

我有一个程序,它从流中获取信息并使用cin读取并稍后转换输入。gdb创建流

这是该程序的调用:

cat file1 | ./converter 
用C++

正是这种线

while (! cin.eof()) 

其从流中读出。

是否可以在gdb中模拟管道? 因为我不能在没有它的情况下调试源代码。

+0

首先,你应该把你的程序改写为_not_ do'while(!eof)'。直到你尝试读取并且失败时,'eof'标志才会被设置,这意味着你将有一个迭代,读取失败,但你可能仍然继续,就好像什么也没有发生。相反,'while(read_operation)'(例如'while(std :: getline(std :: cin,input))')。 – 2013-04-04 09:41:05

+0

Thx为您的评论,我知道.eof()是至关重要的。 但不允许更改此代码的部分内容。 – demonking 2013-04-04 11:18:33

回答

1

如果你读了documentation,像program input/output的部分,你会看到,你可以正常使用重定向为run命令:

(gdb) run < file1 

这将stdinfile1重定向运行程序。

+0

thx很多:) 现在我感到惭愧,还没有找到它。 – demonking 2013-04-04 11:16:12