2014-11-04 4 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; } 
    ..... 
}; 

Я ожидал, что строка распечатана через outputLine из DebugHelper будет отображаться в окне студии вывода. Однако этого не происходит ни для std :: cout, ни для std :: err. Предполагается ли это? Есть ли какие-то настройки в свойствах проекта, которые мне не хватает? BTW тот же код работает, как и ожидалось на Mac под QtCreator.

+0

Линия кода из класса на самом деле не доказывает, что вы выводите что-либо. Покажите нам программу, которая демонстрирует проблему. Edit: Если это окно отладки, вам нужно использовать 'OutputDebugString' или макрос' TRACE'. – PaulMcKenzie

ответ

2

Для Visual Studio используйте OutputDebugString или TRACE для вывода на монитор отладки (который является окном Output при работе в Visual Studio).

IMO, использующий вышеупомянутые функции для вывода строк для целей отладки, предпочтителен cout и ужасный подход «MessageBox», поскольку оба этих подхода могут (и не раз) будут мешать работе программы, вы бежите.

+0

Спасибо. У меня есть сомнения относительно TRACE, потому что мне нужен вывод как в отладочных, так и в релизных сборках. Однако OutputDebugString делает то, что мне нужно, и работает для отладки и выпуска. – LRaiz

+0

@LRaiz - Я также предпочитаю OutputDebugString - просто добавил 'TRACE' на всякий случай, когда вы столкнулись с ним. – PaulMcKenzie

2

В выходных окнах отображается содержимое потока отладки - выход консоли выводится в окно консоли.

+1

, в частности, cout перенаправляется на стандартный выход, который по умолчанию является консольным окном. Может быть отправлен в другие места (например, файл). – Jeff

Смежные вопросы