2014-04-05 169 views
1

我一直在試圖按照this similar question的第一個答案的選項3中給出的建議。我成功地使用提供的命令重定向輸入,但我無法設法重定向輸出。這是我的命令:GDB Windows輸出重定向

# gdb debugee.exe 
(gdb) b main 
(gdb) run 
(gdb) p dup2(open("output.txt", 256), 1) 
(gdb) c 

注意到,我使用256說「創造,如果不存在」和1,而不是0到stdout重定向,而不是標準輸入。

該文件已創建,並且程序輸出顯示爲某處,因爲它沒有出現在終端窗口中;但該文件保持空白。

我在做什麼錯?還是有額外的輸出考慮?

回答

1

你應該首先嚐試:

p open("output.txt", 256) 

,並確認這將返回比-1以外的東西。

O_CREAT版本的open實際上需要3個參數。假設O_CREAT是在你的系統上其實256和O_WRONLY是1,正確的調用應該像

p open("output.txt", 257, 0744) 

我在做什麼錯?

除了爲新創建文件的模式提供垃圾,您正在以只讀模式創建它。隨後的寫入都因此失敗,並且去無處