qtestlib/Unix: Output function time and total time in case of a crash

This helps to distinguish timeouts from real crashes in COIN.
This is already done for Windows.

Change-Id: I4daeafa36f50482d20cea4bd1106647081ff7abe
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
This commit is contained in:
Friedemann Kleint 2018-03-21 10:16:59 +01:00
parent 4c0e27ae6f
commit f1bf7eb34a

View File

@ -208,8 +208,13 @@ static void stackTrace()
if (debuggerPresent())
return;
#if defined(Q_OS_LINUX) || defined(Q_OS_MACOS)
const int msecsFunctionTime = qRound(QTestLog::msecsFunctionTime());
const int msecsTotalTime = qRound(QTestLog::msecsTotalTime());
fprintf(stderr, "\n=== Received signal at function time: %dms, total time: %dms, dumping stack ===\n",
msecsFunctionTime, msecsTotalTime);
#endif
#ifdef Q_OS_LINUX
fprintf(stderr, "\n========= Received signal, dumping stack ==============\n");
char cmd[512];
qsnprintf(cmd, 512, "gdb --pid %d 2>/dev/null <<EOF\n"
"set prompt\n"
@ -221,9 +226,8 @@ static void stackTrace()
(int)getpid());
if (system(cmd) == -1)
fprintf(stderr, "calling gdb failed\n");
fprintf(stderr, "========= End of stack trace ==============\n");
fprintf(stderr, "=== End of stack trace ===\n");
#elif defined(Q_OS_OSX)
fprintf(stderr, "\n========= Received signal, dumping stack ==============\n");
char cmd[512];
qsnprintf(cmd, 512, "lldb -p %d 2>/dev/null <<EOF\n"
"bt all\n"
@ -232,7 +236,7 @@ static void stackTrace()
(int)getpid());
if (system(cmd) == -1)
fprintf(stderr, "calling lldb failed\n");
fprintf(stderr, "========= End of stack trace ==============\n");
fprintf(stderr, "=== End of stack trace ===\n");
#endif
}