标签: qdebug

如何重定向qDebug,qWarning,qCritical等输出?

我在qDebug() <<调试输出中使用了很多语句.有没有任何跨平台的方法我可以将调试输出重定向到文件,而不需要求助于shell脚本?我猜测open()dup2()将在Linux中完成这项工作,但它是否可以在Windows中使用MinGW编译?

也许有Qt方法可以做到这一点?

c++ debugging qt mingw qdebug

77
推荐指数
6
解决办法
6万
查看次数

如何在没有附加空格和换行符的情况下调用qDebug?

我正在使用C++/Qt打印函数qDebug,但有时我想控制",空格和换行符是如何附加的,而不是使用默认的qDebug.

我们举一个简单的例子:

QString var1("some string");
int var2 = 1;
qDebug() << var1 << "=" << var2;
Run Code Online (Sandbox Code Playgroud)

这将打印

"some string" = 1 
Run Code Online (Sandbox Code Playgroud)

但是,让我们说我不喜欢附加的"和空间,并希望打印看起来像

some string=1 
Run Code Online (Sandbox Code Playgroud)

我怎么称呼qDebug?


注意:qDebug中有一个名为nospace的函数,但它会删除空格.但"仍然存在.

如果我用这个:

qDebug().nospace() << var1 << "=" << var2;
Run Code Online (Sandbox Code Playgroud)

我明白了:

"some string"=1
Run Code Online (Sandbox Code Playgroud)

但请注意,我还没有找到摆脱结束换行符的方法.

/谢谢

c++ qt qdebug

56
推荐指数
6
解决办法
5万
查看次数

如何使用qDebug打印字符串文字和QString?

有没有简单的方法来完成以下工作?我的意思是有没有帮助类Qt准备字符串qDebug

QString s = "value";
qDebug("abc" + s + "def");
Run Code Online (Sandbox Code Playgroud)

c++ qstring qt qdebug

28
推荐指数
4
解决办法
7万
查看次数

qDebug()线程安全吗?

qDebug()线程安全的?通过线程安全我不仅仅意味着不崩溃,而且如果我qDebug()从不同的线程调用,输出是否可能变得混乱?我用这个代码测试了它,但它看起来并不是这样,但是,我在文档中的任何地方都找不到它们所讨论的内容.

这是我的测试代码:

#include <QtConcurrent>
#include <QApplication>
void print_a() {
    for (int ii = 0; ii < 10000; ii++) {
        qDebug("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa");
    }
}
void print_b()
{
    for (int ii = 0; ii < 10000; ii++) {
        qDebug("bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
    }
}
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QtConcurrent::run(print_a);
    QtConcurrent::run(print_b);
    return a.exec();
}
Run Code Online (Sandbox Code Playgroud)

任何地方没有'a'和'b'混合在同一行,但我仍然不确定它是否100%线程安全......

c++ qt multithreading qdebug

25
推荐指数
4
解决办法
5176
查看次数

为什么qDebug在Release版本中工作?

来自MFC,我的处理qDebug()很像TRACE(),假设它是由预处理器从Release版本中删除的(在MFC中它已经完成使用#define TRACE 1 ? (void*) 0 : AfxTrace).

然而,令我惊讶的是,qDebug()它也在Release版本中执行.我该如何改变?而且,为什么会这样,Qt的开发人员在这个决定背后的原因是什么?

c++ qt qdebug

20
推荐指数
2
解决办法
1万
查看次数

无法在Qt Creator中检索调试输出

在Windows上的Qt Creator中,qDebug()语句不起作用,并在输出窗口中显示以下消息:

无法检索调试输出.

怎么修好?

windows qt qt-creator qdebug

18
推荐指数
1
解决办法
7039
查看次数

避免在qDebug中使用换行符()

有时我想输出一行qDebug(),但是有一些条件文本,比如

if (fontMetricsLeading < 0)
    qDebug() << "!!!";
qDebug() << fontMetricsLeading;
Run Code Online (Sandbox Code Playgroud)

但是,这将在两个单独的行上输出它们.

有没有办法避免在每个后添加新行qDebug()

c++ qt newline qdebug

17
推荐指数
1
解决办法
7725
查看次数

Qdebug显示十六进制值

我试图使用十六进制格式的QDebug显示一个数字.下面是我写的代码.它正在工作,但输出的字符串内容用双引号括起来:

如何删除这些报价?

m_CanMsg_ptr->id = 0x720;
m_CanMsg_ptr->sizeData = 1;
m_CanMsg_ptr->data[0] = 0x05;

MessageID.setNum(m_CanMsg_ptr->id,16);
DataSize  = QString("%1").arg(m_CanMsg_ptr->sizeData, 0, 16);
data      = QString("%1").arg(m_CanMsg_ptr->data[0], 0, 16)

qDebug() << "Heart-Beat : Msg ID = " << MessageID << "  Msg DLC = " << DataSize;
qDebug() << "Msg Data " << " = " << data;
Run Code Online (Sandbox Code Playgroud)

我根据这些资源做了:

http://forum.qt.io/topic/5003/moved-how-to-display-a-local-variable-in-hex-when-debugging-a-qt-app/2 http://qt.shoutwiki .COM /维基/ Convert_hexadecimal_to_decimal_and_vice-versa_in_Qt

在此输入图像描述

qt qdebug

15
推荐指数
5
解决办法
3万
查看次数

为什么QString印有引号?

因此,当您使用qDebug()打印QString时,输出中会突然出现引号.

int main()
{
    QString str = "hello world"; //Classic
    qDebug() << str; //Output: "hello world"
    //Expected Ouput: hello world
}
Run Code Online (Sandbox Code Playgroud)

我知道我们可以使用qPrintable(const QString)来解决这个问题,但我只是想知道为什么QString会像那样工作?并且QString中是否有一个方法来改变它的打印方式?

qstring qt qdebug

15
推荐指数
3
解决办法
1万
查看次数

如何启用和禁用qDebug()消息

我通过编写禁用qDebug()消息

CONFIG(release, debug|release):DEFINES += QT_NO_DEBUG_OUTPUT
Run Code Online (Sandbox Code Playgroud)

在.pro文件中.这很好用.我想知道是否有任何方法可以使用源代码启用qDebug()消息.我想将它作为参数发送给应用程序.因此,默认情况下,我将禁用qDebug()消息,但是如果参数声明要打开qDebug()消息,则需要启用qDebug().是否有可能做到这一点?

任何帮助表示赞赏

qt qdebug

15
推荐指数
2
解决办法
2万
查看次数

标签 统计

qdebug ×10

qt ×10

c++ ×6

qstring ×2

debugging ×1

mingw ×1

multithreading ×1

newline ×1

qt-creator ×1

windows ×1