2013-04-04 45 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