問題簡述
在使用 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發的一些解決方案:
- 從命令行啟動QtCreator: $ QT_LOGGING_TO_CONSOLE=1 qtcreator.
- 使用Export將QT_LOGGING_TO_CONSOLE=1加入到環境變量中(.bashrc/.zshrc等等,可能要重啟以生效).
- 編輯qtcreator.desktop啟動文件加上QT_LOGGING_TO_CONSOLE=1的環境變量.
- 重新編譯安裝Qt,記得不要加-journald參數.
- 換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