Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Qt Creator and other tools
  4. qDebug() doesn't show messages in Qt Creator/Application Output

qDebug() doesn't show messages in Qt Creator/Application Output

Scheduled Pinned Locked Moved Solved Qt Creator and other tools
45 Posts 8 Posters 4.3k Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • jronaldJ jronald

    It works after adding QT_ASSUME_STDERR_HAS_CONSOLE=1 in "Projects/Run Settings/Environment".
    But I don't know why.

    jronaldJ Offline
    jronaldJ Offline
    jronald
    wrote on last edited by jronald
    #12

    https://bbs.archlinux.org/viewtopic.php?id=259035

    Log from Qt Creator is redirected to systemd journal.
    Maybe Arch Linux maintainers should change some build flag(s) for Qt Creator.

    I've checked journalctl, the outputs are there.
    It should be the cause of archlinux, not intuitive, and leaves unnecessary footprints.

    JonBJ 1 Reply Last reply
    1
    • jronaldJ jronald

      https://bbs.archlinux.org/viewtopic.php?id=259035

      Log from Qt Creator is redirected to systemd journal.
      Maybe Arch Linux maintainers should change some build flag(s) for Qt Creator.

      I've checked journalctl, the outputs are there.
      It should be the cause of archlinux, not intuitive, and leaves unnecessary footprints.

      JonBJ Offline
      JonBJ Offline
      JonB
      wrote on last edited by
      #13

      @jronald
      That looks like it to me for Arch, well found! I can only say I always have Qt from Ubuntu repo and it works, you don't need to set an environment variable.

      jronaldJ 1 Reply Last reply
      2
      • jronaldJ jronald has marked this topic as solved on
      • JonBJ JonB

        @jronald
        That looks like it to me for Arch, well found! I can only say I always have Qt from Ubuntu repo and it works, you don't need to set an environment variable.

        jronaldJ Offline
        jronaldJ Offline
        jronald
        wrote on last edited by jronald
        #14

        @JonB said in qDebug() doesn't show messages in Qt Creator/Application Output:

        I can only say I always have Qt from Ubuntu repo and it works, you don't need to set an environment variable.

        It's the default behaivor of Qt to output to journelctl on linux, https://doc.qt.io/qt-6/qtlogging.html#qDebug

        qDebug(const char *format, ...)
        Logs debug message format to the central message handler.
        

        I think ubuntu has changed this in a good way.

        JonBJ 1 Reply Last reply
        0
        • jronaldJ jronald

          @JonB said in qDebug() doesn't show messages in Qt Creator/Application Output:

          I can only say I always have Qt from Ubuntu repo and it works, you don't need to set an environment variable.

          It's the default behaivor of Qt to output to journelctl on linux, https://doc.qt.io/qt-6/qtlogging.html#qDebug

          qDebug(const char *format, ...)
          Logs debug message format to the central message handler.
          

          I think ubuntu has changed this in a good way.

          JonBJ Offline
          JonBJ Offline
          JonB
          wrote on last edited by
          #15

          @jronald said in qDebug() doesn't show messages in Qt Creator/Application Output:

          It's the default behaivor of Qt to output to journelctl on linux, https://doc.qt.io/qt-6/qtlogging.html#qDebug

          I do not see anything at that link or on that page which mentions journalctl or the systemd journal. I think the "central message handler" in the docs refers to Qt's own QtMessageHandler qInstallMessageHandler(QtMessageHandler handler), which is how qDebug() etc. output their messages. When I Googled for your issue and QT_ASSUME_STDERR_HAS_CONSOLE it came across that this behaviour is specifically in the Arch pre-built. We would come across a lot more questions about this if it applied widely across Linuxes.

          jronaldJ 1 Reply Last reply
          0
          • JonBJ JonB

            @jronald said in qDebug() doesn't show messages in Qt Creator/Application Output:

            It's the default behaivor of Qt to output to journelctl on linux, https://doc.qt.io/qt-6/qtlogging.html#qDebug

            I do not see anything at that link or on that page which mentions journalctl or the systemd journal. I think the "central message handler" in the docs refers to Qt's own QtMessageHandler qInstallMessageHandler(QtMessageHandler handler), which is how qDebug() etc. output their messages. When I Googled for your issue and QT_ASSUME_STDERR_HAS_CONSOLE it came across that this behaviour is specifically in the Arch pre-built. We would come across a lot more questions about this if it applied widely across Linuxes.

            jronaldJ Offline
            jronaldJ Offline
            jronald
            wrote on last edited by
            #16

            @JonB said in qDebug() doesn't show messages in Qt Creator/Application Output:

            this behaviour is specifically in the Arch pre-built

            But the build script is clean: https://gitlab.archlinux.org/archlinux/packaging/packages/qtcreator/-/blob/main/PKGBUILD?ref_type=heads

            1 Reply Last reply
            0
            • JonBJ Offline
              JonBJ Offline
              JonB
              wrote on last edited by JonB
              #17

              Then for all I know other non-Arch distros compile with QT_ASSUME_STDERR_HAS_CONSOLE=1. Whatever, if you Google like I did it seems to me this is Arch but not typical Linux distro, that's all I know.

              FWIW, if you don't wish to recompile Qt itself and you don't wish to have to set environment variable QT_ASSUME_STDERR_HAS_CONSOLE before running to get desired behaviour, be ware you might either:

              • qputenv("QT_ASSUME_STDERR_HAS_CONSOLE", "1") as the very first statement in main(), before Q[Core]Application creation; or
              • Use qInstallMessageHandler() to install your own message handler which does write to stderr or similar.
              1 Reply Last reply
              2
              • jronaldJ Offline
                jronaldJ Offline
                jronald
                wrote on last edited by
                #18

                reported: https://qt-project.atlassian.net/browse/QTCREATORBUG-33823

                1 Reply Last reply
                1
                • aha_1980A Offline
                  aha_1980A Offline
                  aha_1980
                  Lifetime Qt Champion
                  wrote on last edited by
                  #19

                  @jronald And to add to @JonB: You can set the environment variables for a Qt Creator Kit in Edit > Preferences > Kits > Kits. It will then be used for all new projects automatically.

                  Regards

                  Qt has to stay free or it will die.

                  1 Reply Last reply
                  0
                  • M Offline
                    M Offline
                    MHMart_asc
                    wrote on last edited by MHMart_asc
                    #20

                    I have the same issue in Windows 11;
                    Qt Creator 18.0.0
                    Qt 6.10.1 (Desktop_Qt_6_10_1_MSVC2022_64bit)

                    I tried the solution of adding:
                    QT_ASSUME_STDERR_HAS_CONSOLE =1

                    Did so in:

                    • projects > run settings > environment
                    • edit > preferences > kits > (default) > environment (both)

                    Unfortunately, nothing is shown in the application output. Running a completely new project (Qt widget application) with the completely new project settings and only one line added:
                    qDebug() << "hi!";

                    Any thoughts?

                    ps. Enabling the "run in terminal" checkbox in projects > run settings does not show me any output either in the terminal.

                    1 Reply Last reply
                    0
                    • hskoglundH Offline
                      hskoglundH Offline
                      hskoglund
                      wrote on last edited by
                      #21

                      Hi, maybe you have a Visual Studio instance running (behind Qt Creator) that snatches the debug output?
                      A telltale sign is the text "Cannot retrieve debugging output." in Qt Creator's Application Output.

                      M 1 Reply Last reply
                      0
                      • hskoglundH hskoglund

                        Hi, maybe you have a Visual Studio instance running (behind Qt Creator) that snatches the debug output?
                        A telltale sign is the text "Cannot retrieve debugging output." in Qt Creator's Application Output.

                        M Offline
                        M Offline
                        MHMart_asc
                        wrote on last edited by
                        #22

                        @hskoglund thank you for the suggestion

                        22a54ef4-43f2-4a1d-9246-361e6cd9131d-image.png
                        No process with "visual" in the name according to the task manager.

                        111a8440-9c95-432f-aab0-3d854da04d59-image.png
                        Nothing in the application output either...

                        1 Reply Last reply
                        0
                        • hskoglundH Offline
                          hskoglundH Offline
                          hskoglund
                          wrote on last edited by
                          #23

                          Just to be sure, could you rebuild Test3 in Release mode (instead of Debug mode) and check that there's no output

                          M 1 Reply Last reply
                          0
                          • hskoglundH hskoglund

                            Just to be sure, could you rebuild Test3 in Release mode (instead of Debug mode) and check that there's no output

                            M Offline
                            M Offline
                            MHMart_asc
                            wrote on last edited by
                            #24

                            @hskoglund said in qDebug() doesn't show messages in Qt Creator/Application Output:

                            Just to be sure, could you rebuild Test3 in Release mode (instead of Debug mode) and check that there's no output

                            Unfortunately, no output

                            1 Reply Last reply
                            0
                            • hskoglundH Offline
                              hskoglundH Offline
                              hskoglund
                              wrote on last edited by
                              #25

                              If you try the same Windows API call that Qt uses; add
                              #include "windows.h"
                              and
                              OutputDebugString(L"Hello there");
                              does that text show up in the Appliction Output?

                              M 1 Reply Last reply
                              2
                              • JonBJ Offline
                                JonBJ Offline
                                JonB
                                wrote on last edited by
                                #26

                                @MHMart_asc
                                ...And further to @hskoglund's post --- which you should try --- I believe DebugView should still work these days(?), if you download that does your output appear inside it when you run it? Not saying you will have to stick with that, just trying to track down where your messages are going....

                                1 Reply Last reply
                                1
                                • hskoglundH hskoglund

                                  If you try the same Windows API call that Qt uses; add
                                  #include "windows.h"
                                  and
                                  OutputDebugString(L"Hello there");
                                  does that text show up in the Appliction Output?

                                  M Offline
                                  M Offline
                                  MHMart_asc
                                  wrote on last edited by
                                  #27

                                  @hskoglund said in qDebug() doesn't show messages in Qt Creator/Application Output:

                                  If you try the same Windows API call that Qt uses; add
                                  #include "windows.h"
                                  and
                                  OutputDebugString(L"Hello there");
                                  does that text show up in the Appliction Output?

                                  Hi @hskoglund , thanks once more for helping. Unfortunately, nope this doesn't show in the application output.

                                  @JonB said in qDebug() doesn't show messages in Qt Creator/Application Output:

                                  @MHMart_asc
                                  ...And further to @hskoglund's post --- which you should try --- I believe DebugView should still work these days(?), if you download that does your output appear inside it when you run it? Not saying you will have to stick with that, just trying to track down where your messages are going....

                                  Thanks to you as well. Tried this, the debug is not shown there either but I do get this:
                                  19df4585-abfc-4712-9e2c-31bc4d9bb05e-image.png

                                  JonBJ 1 Reply Last reply
                                  0
                                  • M MHMart_asc

                                    @hskoglund said in qDebug() doesn't show messages in Qt Creator/Application Output:

                                    If you try the same Windows API call that Qt uses; add
                                    #include "windows.h"
                                    and
                                    OutputDebugString(L"Hello there");
                                    does that text show up in the Appliction Output?

                                    Hi @hskoglund , thanks once more for helping. Unfortunately, nope this doesn't show in the application output.

                                    @JonB said in qDebug() doesn't show messages in Qt Creator/Application Output:

                                    @MHMart_asc
                                    ...And further to @hskoglund's post --- which you should try --- I believe DebugView should still work these days(?), if you download that does your output appear inside it when you run it? Not saying you will have to stick with that, just trying to track down where your messages are going....

                                    Thanks to you as well. Tried this, the debug is not shown there either but I do get this:
                                    19df4585-abfc-4712-9e2c-31bc4d9bb05e-image.png

                                    JonBJ Offline
                                    JonBJ Offline
                                    JonB
                                    wrote on last edited by JonB
                                    #28

                                    @MHMart_asc
                                    Hmm, I don't know what that means/shows, never seen it. Might be because you are running inside debugger/VS? I don't use Windows/MSVC/VS so not sure what is going on....

                                    One thing: that message says error in LldbEngine. Now, like I said I am not Windows/MSVC, but what is that doing here? So far as I know lldb is to do with Linux, why is it appearing in your Windows setup?

                                    LLDB is part of the LLVM framework, and was created to work alongside of clang++, which is the LLVM C++ compiler

                                    M 1 Reply Last reply
                                    0
                                    • hskoglundH Offline
                                      hskoglundH Offline
                                      hskoglund
                                      wrote on last edited by
                                      #29

                                      Yeah, maybe the lldb debugger is the culprit, i.e. the snatcher of the debug output

                                      1 Reply Last reply
                                      0
                                      • JonBJ JonB

                                        @MHMart_asc
                                        Hmm, I don't know what that means/shows, never seen it. Might be because you are running inside debugger/VS? I don't use Windows/MSVC/VS so not sure what is going on....

                                        One thing: that message says error in LldbEngine. Now, like I said I am not Windows/MSVC, but what is that doing here? So far as I know lldb is to do with Linux, why is it appearing in your Windows setup?

                                        LLDB is part of the LLVM framework, and was created to work alongside of clang++, which is the LLVM C++ compiler

                                        M Offline
                                        M Offline
                                        MHMart_asc
                                        wrote on last edited by
                                        #30

                                        @JonB said in qDebug() doesn't show messages in Qt Creator/Application Output:

                                        @MHMart_asc
                                        Hmm, I don't know what that means/shows, never seen it. Might be because you are running inside debugger/VS? I don't use Windows/MSVC/VS so not sure what is going on....

                                        One thing: that message says error in LldbEngine. Now, like I said I am not Windows/MSVC, but what is that doing here? So far as I know lldb is to do with Linux, why is it appearing in your Windows setup?

                                        LLDB is part of the LLVM framework, and was created to work alongside of clang++, which is the LLVM C++ compiler

                                        What would your suggestion be for things that I could try to test and repair?

                                        1 Reply Last reply
                                        0
                                        • hskoglundH Offline
                                          hskoglundH Offline
                                          hskoglund
                                          wrote on last edited by
                                          #31

                                          Since it's probably the lldb engine inside Qt Creator that misbehaves (the call is coming from inside the house):
                                          try disabling code models/debuggers etc. in your Qt Creator.

                                          1 Reply Last reply
                                          0

                                          • Login

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved