Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to enable and disable qDebug() messages

Tags:

qt

qdebug

I disable the qDebug() messages by writing

CONFIG(release, debug|release):DEFINES += QT_NO_DEBUG_OUTPUT

in the .pro file. This works fine. I would like to know if there is any way to enable qDebug() messages using the source code. I would like to send it as an argument to the application. Therefore by default I will have the qDebug() messages disabled, but with an argument stating to switch on the qDebug() messages I need the qDebug() enabled. Is it possible to do this?

Any help is appreciated

like image 396
gfernandes Avatar asked Feb 16 '15 11:02

gfernandes


3 Answers

You can control QDebug (and all messages) at runtime via a few options:

  1. QLoggingCategory Which allows you to use environment variables or config files. For example with Qt 5.6 you can do: QT_LOGGING_RULES="*.debug=false;driver.usb.debug=true" turns on qDebug for everything except USB debug. If you need a more complicated setup, or if you are using Qt 5.5 or earlier you can turn on and off individual debug messages via a qtlogging.ini file.
  2. QT_MESSAGE_PATTERN can also be used to control message output as well as doing formatting.
like image 176
asj Avatar answered Oct 09 '22 04:10

asj


You can add your own function for handling Qt debug messages with qInstallMsgHandler

This will allow you to control whether to print the messages.

like image 20
Dan Milburn Avatar answered Oct 09 '22 03:10

Dan Milburn


Adding this code to my qmake project file enabled qDebug() messages for release builds on Windows/MSYS, even without the qInstallMsgHandler():

CONFIG += console
CONFIG += warn_on
like image 25
Michal Fapso Avatar answered Oct 09 '22 05:10

Michal Fapso