2014-11-04 186 views
0

我正在開發一個非託管C++ 11應用程序並在VS2013中進行調試。我有一個輔助類VS2013 - 輸出窗口不顯示std :: cout

#include <cstdio> 
class DebugHelper : public dbg::IDebugHelper { 
    public: 
    virtual void outputLine(const std::string & message) const override 
    { std::cout << message << std::endl; } 
    ..... 
}; 

我預計串通過DebugHelper的outputLine印刷將顯示在工作室輸出窗口。然而,對於std :: cout和std :: err都不會發生這種情況。它應該嗎?項目屬性中是否存在某種我缺少的設置?順便說一句,在Mac下QtCreator中的代碼工作正常。

+0

來自某個類的代碼行並不真正證明您正在輸出任何內容。向我們展示演示該問題的程序。編輯:如果它是調試窗口,則需要使用'OutputDebugString'或'TRACE'宏。 – PaulMcKenzie 2014-11-04 21:38:32

回答

2

對於Visual Studio,請使用OutputDebugStringTRACE輸出到調試監視器(在Visual Studio中運行時爲Output窗口)。

爲了調試目的,IMO使用上述函數輸出字符串優於cout以及糟糕的「MessageBox」方法,因爲這兩種其他方法都可能(並且很多時候會)干擾程序的運行你在跑步。

+0

謝謝。我對TRACE有懷疑,因爲我需要在調試版本和發佈版本中都輸出。然而OutputDebugString可以完成我需要的功能,並且可以在調試和發佈時使用。 – LRaiz 2014-11-04 23:02:58

+0

@LRaiz - 我更喜歡OutputDebugString - 只是爲了防止碰到它而添加了'TRACE'。 – PaulMcKenzie 2014-11-04 23:04:28

2

輸出窗口顯示來自調試流的內容 - 控制檯輸出進入控制檯窗口。

+1

更具體地說,cout被重定向到標準輸出,這是默認情況下的控制檯窗口。可以發送到其他位置(即文件)。 – Jeff 2014-11-04 21:40:15