linux下 QtCreator 運行不顯示 qDebug 輸出的問題


問題簡述

在使用 QtCreator 編譯運行程序的時候,在 3應用程序輸出 選項卡頁面內沒有相應的 qDebug 的輸出內容。
關於這個問題,網上有的解決方案是在項目配置選項中勾選 run in terminal。但是這個解決不了根本問題,只是開啟一個終端去運行,在終端輸出而已。

我使用的發行版本為 ManjaroLinux,使用的 QtCreator 為當前最新的 4.14.2 版本。

解決方案

在網上找到了一個解決方案,這個是可以解決問題的。

ArchLinux下QtCreator無法顯示qDebug()的輸出的問題與解決方案

博主最近在升級了Qt之后發現,之前編譯運行完全沒問題的程序在新的Qt5.3中,雖然是以Debug編譯運行,但qDebug()這個最常用的調試函數卻出問題了,表現為在QtCreator的Application Output窗口中不會有debug信息輸出,但如果編譯好程序放在console里運行,是可以看到debug信息的。在網上查閱了一下,發現這是由於Archlinux的二進制打包者使用了-journald編譯參數,而恰好Qt在這方面有個Bug,會導致debug信息不能正常輸出,不過可以手動為QtCreator添加QT_LOGGING_TO_CONSOLE=1的環境變量來解決這個問題。

當前此Bug已經提交到了Qt的bugreports網站中,有人建議將QT_LOGGING_TO_CONSOLE=1加入到QtCreator的默認運行環境變量中,此時Bug還未修復

如果你也遇到了相同的問題,可以試試下面幾個方法,這些方法是在Archlinux的Bug列表中大家針對此Bug發的一些解決方案:

  1. 從命令行啟動QtCreator: $ QT_LOGGING_TO_CONSOLE=1 qtcreator.
  2. 使用Export將QT_LOGGING_TO_CONSOLE=1加入到環境變量中(.bashrc/.zshrc等等,可能要重啟以生效).
  3. 編輯qtcreator.desktop啟動文件加上QT_LOGGING_TO_CONSOLE=1的環境變量.
  4. 重新編譯安裝Qt,記得不要加-journald參數.
  5. 換Qt5.3以下的版本.

不過現在新版本的 QtCreator 已經提示廢棄了 QT_LOGGING_TO_CONSOLE 環境變量的使用,建議使用 QT_ASSUME_STDERR_HAS_CONSOLE 或者 QT_FORCE_STDERR_LOGGING(可同時都使用)。

建議修改 /usr/share/applications/org.qt-project.qtcreator.desktop 文件,加入環境變量QT_ASSUME_STDERR_HAS_CONSOLE=1
修改方法:將 Exec=qtcreator %F 改為 Exec=env QT_ASSUME_STDERR_HAS_CONSOLE=1 qtcreator %F


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM