2011-05-14 58 views
14

我一直在嘗試使用Eclipse CDT來做一些C++示例,我可以使用run命令很好的運行它們,但是每當我嘗試調試,控制檯窗口凍結,我可以輸入,但程序不會繼續。無法在Eclipse上調試小程序cdt在windows下使用mingw/gdb,控制檯凍結

當我調試,我得到的控制檯窗口下面的輸出(無斷點,但符,因爲默認設置在主):

Hello, world 
put your name: 15^running 

的繼續按鈕被禁用,並沒有做任何事情的時候我輸入了一些內容,然後點擊輸入。 15是一個隨機數,有時其16,20等

如果我在Eclipse中運行該程序,我得到的輸入提示就好了:

Hello, world 
put your name: test 
Hello test 

這是我嘗試調試代碼:

#include <iostream> 
#include <string> 

int main() { 
    std::cout << "Hello, world" << std::endl; 
    std::string name; 
    std::cout << "put your name: "; 
    std::cin >> name; 
    std::cout << "Hello " + name << std::endl; 
    return 0; 
} 

我的路徑VAR:
C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32\WBEM;C:\Program Files\Java\jdk1.6.0_14\bin;C:\MinGW\bin

Eclipse版本:赫利俄斯服務版本2
CDT版本:7.0.2
操作系統:Windows XP
GDB版本:GNU GDB(GDB)7.2

我怎麼能調試CDT在這個小例子,沒有問題?

回答

0

以下是從Eclipse網站的常見問題解答:

http://wiki.eclipse.org/CDT/User/FAQ#Eclipse_console_does_not_show_output_on_Windows

Eclipse控制檯上沒有顯示 Windows在Windows上輸出在Eclipse CDT,該程序正在運行的標準輸出或調試完全 緩衝,因爲它沒有連接到Windwos控制檯,而是連接到 管道。有關更多詳細信息,請參閱錯誤173732。無論是在主 功能開始 後加fflush調用每一個printf或者添加以下行:

setvbuf(stdout, NULL, _IONBF, 0); 
setvbuf(stderr, NULL, _IONBF, 0); 

好像Windows上的預期錯誤。

12

15^running看起來是來自gdb的Machine Interface的結果記錄。通常它不應該出現在Eclipse控制檯中。

我建議嘗試一個不同的Create Process Launcher。它可以通過以下方式更改:

  1. 在主菜單中選擇「運行」 - >「調試配置...」。

  2. 在下面顯示的打開的「調試配置」窗口中,單擊「使用GDB(DSF)創建進程啓動器」對面的「選擇其他...」。

    enter image description here

  3. 在打開的「選擇首選啓動器」窗口,如下圖所示勾選「使用配置特定設置」,在列表中選擇「標準創建進程啓動」下面,單擊確定。

    enter image description here

  4. 現在去調試選項卡中的「調試配置」窗口中,選擇調試器,例如「MinGW gdb」並單擊應用。

    enter image description here

與標準創建進程啓動,我能夠調試程序雖然「把你的名字:」只有當我輸入一些東西,然後按Enter印刷,因爲輸出流是不會被刷新。

+1

感謝您 - 這是我在linux上遇到的問題,當嘗試使用gdb + eclipse調試mozilla時。 – jwir3 2011-12-01 00:05:33

相關問題