En Qt Creator, pude ver la salida qDebug()
, qWarning()
etc. directamente en el IDE. ¿Cómo podría hacer esto en Visual Studio?Cómo ver qDebug() en Visual Studio?
Respuesta
Cuando ejecuta el programa con un depurador adjunto, se mostrará en la Ventana de salida de Visual Studio, pero a efectos de depuración, a menudo redirijo la salida de depuración a algún tipo de ventana de registro agradable, que puede hacer utilizando el qInstallMsgHandler
función:
el código que yo uso:
#include <qapplication.h>
#include <qwidget.h>
#include <qplaintextedit.h>
#include <qmetaobject.h>
#include <qthread.h>
#include <qboxlayout.h>
#include <qdatetime.h>
#include <qdebug.h>
#include <cstdio>
#include <cassert>
QWidget *DEBUG_MESSAGE_DISPLAY_WIDGET = NULL;
QPlainTextEdit *DEBUG_MESSAGE_DISPLAY_TEXTEDIT = NULL;
void setupDebugDisplay();
void debugMessageDisplayFunc(QtMsgType type, const char *msg);
int main(int argc, char* argv[])
{
QApplication a(argc, argv);
a.setQuitOnLastWindowClosed(true);
setupDebugDisplay();
// your code here.... e.g:
// YourMainWindow mainWindow;
int ret = a.exec();
delete DEBUG_MESSAGE_DISPLAY_WIDGET;
return ret;
}
void setupDebugDisplay()
{
QWidget *widget = new QWidget();
widget->setWindowTitle("Debug Log");
widget->setAttribute(Qt::WA_QuitOnClose, false); //quit only when mainwindow is closed
QBoxLayout* layout = new QVBoxLayout();
widget->setLayout(layout);
QPlainTextEdit *textEdit = new QPlainTextEdit(widget);
QFont font = QFont("Monospace");
font.setStyleHint(QFont::TypeWriter);
textEdit->setFont(font);
textEdit->setReadOnly(true);
layout->addWidget(textEdit);
widget->show();
DEBUG_MESSAGE_DISPLAY_WIDGET = widget;
DEBUG_MESSAGE_DISPLAY_TEXTEDIT = textEdit;
qInstallMsgHandler(debugMessageDisplayFunc);
}
void debugMessageDisplayFunc(QtMsgType type, const char *msg)
{
bool do_abort = false;
const char* msgTypeStr = NULL;
switch (type) {
case QtDebugMsg:
msgTypeStr = "Debug";
break;
case QtWarningMsg:
msgTypeStr = "Warning";
break;
case QtCriticalMsg:
msgTypeStr = "Critical";
break;
case QtFatalMsg:
msgTypeStr = "Fatal";
do_abort = true;
default:
assert(0);
return;
}
QTime now = QTime::currentTime();
QString formattedMessage =
QString::fromLatin1("%1 %2 %3")
.arg(now.toString("hh:mm:ss:zzz"))
.arg(msgTypeStr).arg(msg);
// print on console:
fprintf(stderr, "%s\n", formattedMessage.toLocal8Bit().constData());
// print in debug log window
{
bool isMainThread = QThread::currentThread() == QApplication::instance()->thread();
if(DEBUG_MESSAGE_DISPLAY_TEXTEDIT)
{
if(isMainThread)
DEBUG_MESSAGE_DISPLAY_TEXTEDIT->appendPlainText(formattedMessage);
else // additional code, so that qDebug calls in threads will work aswell
QMetaObject::invokeMethod(DEBUG_MESSAGE_DISPLAY_TEXTEDIT, "appendPlainText", Qt::QueuedConnection, Q_ARG(QString, formattedMessage));
}
}
}
Redirigir a las ventanas de resultados de visual studio.
hay una manera más fácil:
Ir al proyecto Propiedades> Enlazador> Sistema: conjunto subsistema "SUBSISTEMA: CONSOLA"
Ahora obtendrá una consola cuando ejecute su programa y se le redirigirá a qDebug(). (También puede usar std :: cout)
Sugerencia muy extraña. ¿Qué ocurre si tengo una aplicación Win32 y/SUBSYSTEM: WINDOWS es una opción obligatoria? – Dalamber
- 1. ¿Cómo ver el SQL ejecutado por LINQ en Visual Studio?
- 2. Ver todos los artículos TODO en Visual Studio usando GhostDoc
- 3. Ver código de diseñador en Visual Studio 2010
- 4. ¿Ver matriz en el depurador de Visual Studio?
- 5. Ver todos los puntos de interrupción en Visual Studio 2010+
- 6. Visual Studio C++: ¿Al ver el código ASM?
- 7. ¿Cómo imprime qDebug() valores enum?
- 8. ¿Cómo puedo ver los mensajes qDebug durante la depuración en QtCreator
- 9. C en Visual Studio
- 10. qDebug no muestra nada
- 11. Visual Studio 2008: ¿cómo pausar el programa en ejecución para ver un valor variable?
- 12. Visual Studio: ¿cómo puedo ver el mismo archivo en dos grupos de pestañas separadas?
- 13. ¿Cómo ver todos los elementos de una matriz bidimensional en Visual Studio 2010?
- 14. ¿Cómo ver las variables de sesión en Visual Studio 2008 Debugger?
- 15. Boo en Visual Studio?
- 16. #warning en Visual Studio
- 17. LINQPad en Visual Studio
- 18. Visual Studio 2012 en comparación con Visual Studio 2010 (delta)
- 19. Visual Studio 2010 "Mancha"
- 20. ¿Cómo funciona Visual Studio Intellisense?
- 21. ¿Cómo reconstruir Visual Studio Toolbox?
- 22. ¿Cómo reiniciar Visual Studio manualmente?
- 23. ¿Cómo abro los enlaces en Visual Studio en mi navegador web y no en Visual Studio?
- 24. ¿Cómo detener una compilación en Visual Studio?
- 25. Cómo depurar Visual Studio en 64-bit
- 26. Cómo deshabilitar AnkhSVN en Visual Studio 2010?
- 27. ¿Cómo activar IntelliSense en Visual Studio 2010?
- 28. ¿Cómo desarrollar GUI únicas en Visual Studio?
- 29. Cómo refactorizar grandes proyectos en visual studio
- 30. Cómo agregar NUnit en Visual Studio
eso no es cierto en todos los casos –