当打印到 Qt Creator 的调试控制台时,__FILE__ 和 __LINE__ 可以链接吗?
标题:
#define TRACE_ERROR(s) \
{
...
char TraceBuffer[512];
sprintf(TraceBuffer, "%s\t(%s:%d)", s, __FILE__, __LINE__);
DebugErrTrace(TraceBuffer);
...
}
实现:
void DebugErrTrace(char *String, ...) {
...
qDebug() << String;
}
上面输出了一行调试跟踪,可能看起来像
ERROR File Missing! (..\trunk\Common\FileManager.cpp:102)
在 Qt Creator 的调试控制台中。
我注意到 Qt 自己的错误消息,例如
Object::connect: No such slot cClass::Method(QString) in ..\trunk\Components\Class.cpp:301
创建看起来像调试行的 __FILE__:__LINE__
部分周围的超链接,链接到导致问题的行。有什么办法可以用我自己的调试输出来做到这一点吗?
干杯,萨姆
Header:
#define TRACE_ERROR(s) \
{
...
char TraceBuffer[512];
sprintf(TraceBuffer, "%s\t(%s:%d)", s, __FILE__, __LINE__);
DebugErrTrace(TraceBuffer);
...
}
Implementation:
void DebugErrTrace(char *String, ...) {
...
qDebug() << String;
}
The above spits out a line of debug trace, which might look something like
ERROR File Missing! (..\trunk\Common\FileManager.cpp:102)
in Qt Creator's debug console.
I've noticed that Qt's own error messages e.g.
Object::connect: No such slot cClass::Method(QString) in ..\trunk\Components\Class.cpp:301
create what looks like a hyperlink around the __FILE__:__LINE__
part of the debug line, linking to the line which caused the problem. Is there any way I can I do this with my own debug output?
Cheers, Sam
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
除了 alexisdm 的回答(这对我很有帮助,非常感谢!):
我建议在较新版本的 Qt 中执行以下操作并使用 qDebug 本身,而不是定义自定义宏:
该部分
\n
之前是 Qt 的默认消息模式,使用\n
进行拆分的好处是日志消息还可以包含[
或 <代码>] 没有搞乱链接。消息模式可以轻松地使用其他日志详细信息(如时间戳、线程 ID 等)进行扩展,请参阅 文档。添加其他详细信息时,请将链接保留在单独的行中,以避免 Qt Creator 的解析出现问题。
In addition to alexisdm's answer (which helped me very much, big thanks!):
Instead of defining a custom macro, I would suggest to do the following in newer versions of Qt and use
qDebug
itself:The part before
\n
is Qt's default message pattern, and splitting with\n
has the benefit that the log messages also can contain characters like[
or]
without messing up the links.The message pattern can easily be extended with other log details like timestamps, thread id and so on, see the documentation. When adding other details, keep the link in a seperate line to avoid issues with Qt Creator's parsing.
根据Qt Creator源代码(有),超链接仅针对与这些正则表达式匹配的行创建:
因此,您可以构造的最简单的行如下所示:
Qt Creator 似乎并不关心后面的路径是否
"file:///"
是否是绝对的。According to Qt Creator source code (there), the hyperlinks are only created for lines matching these regular expressions:
So the simplest lines you could construct look like this:
Qt Creator doesn't seem to care if the path after
"file:///"
is absolute or not.