qDebug 不显示任何内容

问题描述 投票:0回答:9

通常,当我需要调试某些内容时,使用

qDebug()
打印某些内容比使用调试器逐步调试更容易。 问题是有时根本不显示
qDebug()
的输出!与
qWarning
qCritical
相同。奇怪的是,只有正常运行项目(Ctrl+R)时才会出现这种情况,而调试(F5)时才会出现输出。

c++ qt qt-creator qdebug
9个回答
16
投票

解决办法很简单: 将

CONFIG += console
添加到您的 .pro 文件并重建整个项目。


11
投票

对我来说的解决方案,如https://bugzilla.redhat.com/show_bug.cgi?id=1227295#c10中所述是:

  1. qtlogging.ini
    中寻找
    /etc/xdg/QtProject/
    .
  2. 编辑当前文件(或创建文件
    qtlogging.ini
    ,如果丢失)
[Rules]
*.debug=false

[Rules]
*.debug=true
qt.*.debug=false
  1. 重新编译并检查!

6
投票

我遇到了同样的问题,这里的答案都没有帮助我。我在这里找到了解决方案:https://lists.fedoraproject.org/archives/list/[电子邮件受保护]/thread/SB6QJZGVDLWWBZCMTNKMVZSSPPNREOYJ/

我必须设置环境变量

QT_ASSUME_STDERR_HAS_CONSOLE=1
。这可以用代码完成:

qputenv("QT_ASSUME_STDERR_HAS_CONSOLE", "1");

或者在“环境”下的“套件”设置中更好。


5
投票

如果您正在运行 Qt Creator 的多个实例,qDebug 将无法正常工作。


1
投票

我使用这个问题的解决方案

Windows 10 Education
Qt Creator (5.x)
Developing a Qt widget.

问题:

所以我的问题是,每当我添加

QDebug
消息时,它都不会显示在应用程序输出中,尽管我的代码与教程中的代码 100% 相同并且编译得很好。

解决方案:

右键单击添加了

QDebug
消息的文件,对我来说是
main.cpp
。单击构建。按底部的绿色箭头。

如果这仍然不起作用,请转到“Build”->“CleanAll”、“Build”->“qMake”,然后再次选择绿色箭头。

当然,您必须

#include <QDebug>
并检查代码中的拼写是否正确。


0
投票

就我而言,不知何故我忘记单击“配置项目”。我正在使用 QTCreator 4.11 和 Qt5.14。当我创建项目时,我没有在创建过程即将结束时单击“配置项目”。


0
投票

Qt5.14.2、QtCreator 4.12.0: 对我有用的是取消选择“项目”->“运行”->“在终端中运行”... 呃!


0
投票

您必须配置日志记录规则。请参阅文档

格式为:

    <category>[.<type>] = true|false

日志记录规则会自动从日志记录配置文件中的 [Rules] 部分加载。这些配置文件在 QtProject 配置目录中查找,或在 QT_LOGGING_CONF 环境变量中显式设置:

    [Rules]
    *.debug=false
    driver.usb.debug=true

日志记录规则也可以在 QT_LOGGING_RULES 环境变量中指定;多个规则也可以用分号分隔:

    QT_LOGGING_RULES="*.debug=false;driver.usb.debug=true"

例如:

QT_LOGGING_RULES="*.debug=true;qt.*=false"

0
投票

通过添加解决:

export QT_ASSUME_STDERR_HAS_CONSOLE=1

将qtcreator启动脚本放置在:

/home/yourUsername/qtcreator-10.0.0/bin/qtcreator.sh

由从官方网站下载的应用程序提供。

#! /bin/sh

export QT_ASSUME_STDERR_HAS_CONSOLE=1

# Use this script if you add paths to LD_LIBRARY_PATH
# that contain libraries that conflict with the
# libraries that Qt Creator depends on.

makeAbsolute() {
    case $1 in
        /*)
            # already absolute, return it
            echo "$1"
            ;;
        *)
            # relative, prepend $2 made absolute
            echo `makeAbsolute "$2" "$PWD"`/"$1" | sed 's,/\.$,,'
            ;;
    esac
}
..
//some lines...
..
export LD_LIBRARY_PATH
exec "$bindir/qtcreator" -user-library-path "$_ORIGINAL_LD_LIBRARY_PATH" ${1+"$@"}.

更新:上述解决方案对 Qt Creator 有效。使用像 xterm 这样的终端来启动、分离一个 Qt 应用程序,该应用程序使用 QProcess 类来启动另一个 Qt 应用程序(在我的例子中,在一个具有多个子项目的项目中),第一个中的 readStandardError() 信号正确获取第二个的 stderr直到进程之间的通信中断时终端关闭。我解决了第二个问题添加

     qputenv("QT_ASSUME_STDERR_HAS_CONSOLE", "1");

在main.cpp中这样:

    #include "frmparman.h"
    #include <QApplication>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        qputenv("QT_ASSUME_STDERR_HAS_CONSOLE", "1");
        a.setStyle("windows");
        frmParman w;
        w.show();
    
        return a.exec();
    }
© www.soinside.com 2019 - 2024. All rights reserved.