sam*_*m-w 9 debugging qt gdb qt-creator c-preprocessor
标题:
#define TRACE_ERROR(s) \
{
...
char TraceBuffer[512];
sprintf(TraceBuffer, "%s\t(%s:%d)", s, __FILE__, __LINE__);
DebugErrTrace(TraceBuffer);
...
}
Run Code Online (Sandbox Code Playgroud)
执行:
void DebugErrTrace(char *String, ...) {
...
qDebug() << String;
}
Run Code Online (Sandbox Code Playgroud)
上面吐出一行调试跟踪,可能看起来像
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__
调试行部分的超链接,链接到导致问题的行.有什么办法可以用我自己的调试输出来做到这一点吗?
干杯,山姆
ale*_*sdm 11
根据Qt Creator源代码(那里),仅为匹配这些正则表达式的行创建超链接:
"^(?:\\[Qt Message\\] )?(file:///.+:\\d+(?::\\d+)?):"
"Object::.*in (.*:\\d+)"
"ASSERT: .* in file (.+, line \\d+)"
"^ Loc: \\[(.*)\\]"
Run Code Online (Sandbox Code Playgroud)
所以你可以构造的最简单的行看起来像这样:
qWarning("file:///%s:%i: %s", __FILE__, __LINE__, "your message");
qWarning(" Loc: [%s:%i] %s", __FILE__, __LINE__, "your message");
Run Code Online (Sandbox Code Playgroud)
Qt Creator似乎并不关心后面的路径"file:///"
是否绝对.