Qt에서 디버깅 정보는 qDebug() 및 기타 유사한 문을 사용하여 콘솔에 인쇄되는 경우가 많습니다. 특히 크로스 플랫폼 개발의 경우 이 출력을 파일로 리디렉션하는 것이 유용할 수 있습니다. 이렇게 하면 쉘 스크립트를 사용하지 않고 보다 일관된 솔루션을 제공할 수 있습니다.
디버그 출력을 리디렉션하기 위해 Qt는 qInstallMessageHandler() 함수를 제공합니다. 이를 통해 메시지가 인쇄되기 전에 처리하는 사용자 정의 메시지 처리기를 설치할 수 있습니다. 다음은 예제 핸들러입니다.
<code class="cpp">void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg) { QByteArray localMsg = msg.toLocal8Bit(); switch (type) { case QtDebugMsg: fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function); break; case QtInfoMsg: // ... case QtWarningMsg: // ... case QtCriticalMsg: // ... case QtFatalMsg: fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function); abort(); } }</code>
이 핸들러는 메시지를 stderr로 출력하지만 stderr을 파일 스트림으로 대체하여 출력을 리디렉션할 수 있습니다.
하려면 사용자 정의 핸들러를 설치하고 main() 함수에서 qInstallMessageHandler()를 호출하십시오.
<code class="cpp">qInstallMessageHandler(myMessageOutput);</code>
설치가 완료되면 모든 qDebug 및 유사한 메시지가 핸들러로 리디렉션되어 지정한 파일이나 스트림에 기록됩니다.
위 내용은 Qt에서 QDebug, QWarning 및 QCritical 출력을 어떻게 리디렉션할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!