mirror of
https://github.com/corda/corda.git
synced 2025-03-03 21:00:56 +00:00
Trace writeout refactor
This commit is contained in:
parent
e6fc4e3bea
commit
9e4144f92b
@ -4759,6 +4759,27 @@ visitRoots(Machine* m, Heap::Visitor* v)
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
logTrace(FILE* f, const char* fmt, ...)
|
||||
{
|
||||
va_list a;
|
||||
va_start(a, fmt);
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
const unsigned length = _vscprintf(fmt, a);
|
||||
#else
|
||||
const unsigned length = vsnprintf(0, 0, fmt, a);
|
||||
#endif
|
||||
RUNTIME_ARRAY(char, buffer, length + 1);
|
||||
vsnprintf(&buffer[0], length, fmt, a);
|
||||
buffer[length] = 0;
|
||||
va_end(a);
|
||||
|
||||
::fprintf(f, "%s", &buffer[0]);
|
||||
#ifdef PLATFORM_WINDOWS
|
||||
::OutputDebugStringA(&buffer[0]);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
printTrace(Thread* t, object exception)
|
||||
{
|
||||
@ -4768,34 +4789,19 @@ printTrace(Thread* t, object exception)
|
||||
|
||||
for (object e = exception; e; e = throwableCause(t, e)) {
|
||||
if (e != exception) {
|
||||
fprintf(errorLog(t), "caused by: ");
|
||||
#if defined(PLATFORM_WINDOWS)
|
||||
OutputDebugStringA("caused by: ");
|
||||
#endif
|
||||
logTrace(errorLog(t), "caused by: ");
|
||||
}
|
||||
|
||||
fprintf(errorLog(t), "%s", &byteArrayBody
|
||||
logTrace(errorLog(t), "%s", &byteArrayBody
|
||||
(t, className(t, objectClass(t, e)), 0));
|
||||
#if defined(PLATFORM_WINDOWS)
|
||||
OutputDebugStringA((const CHAR*)&byteArrayBody
|
||||
(t, className(t, objectClass(t, e)), 0));
|
||||
#endif
|
||||
|
||||
if (throwableMessage(t, e)) {
|
||||
object m = throwableMessage(t, e);
|
||||
THREAD_RUNTIME_ARRAY(t, char, message, stringLength(t, m) + 1);
|
||||
stringChars(t, m, RUNTIME_ARRAY_BODY(message));
|
||||
fprintf(errorLog(t), ": %s\n", RUNTIME_ARRAY_BODY(message));
|
||||
#if defined(PLATFORM_WINDOWS)
|
||||
OutputDebugStringA(": ");
|
||||
OutputDebugStringA(RUNTIME_ARRAY_BODY(message));
|
||||
OutputDebugStringA("\n");
|
||||
#endif
|
||||
logTrace(errorLog(t), ": %s\n", RUNTIME_ARRAY_BODY(message));
|
||||
} else {
|
||||
fprintf(errorLog(t), "\n");
|
||||
#if defined(PLATFORM_WINDOWS)
|
||||
OutputDebugStringA("\n");
|
||||
#endif
|
||||
logTrace(errorLog(t), "\n");
|
||||
}
|
||||
|
||||
object trace = throwableTrace(t, e);
|
||||
@ -4809,36 +4815,17 @@ printTrace(Thread* t, object exception)
|
||||
int line = t->m->processor->lineNumber
|
||||
(t, traceElementMethod(t, e), traceElementIp(t, e));
|
||||
|
||||
fprintf(errorLog(t), " at %s.%s ", class_, method);
|
||||
#if defined(PLATFORM_WINDOWS)
|
||||
OutputDebugStringA(" at ");
|
||||
OutputDebugStringA((const CHAR*)class_);
|
||||
OutputDebugStringA(".");
|
||||
OutputDebugStringA((const CHAR*)method);
|
||||
OutputDebugStringA(" ");
|
||||
#endif
|
||||
logTrace(errorLog(t), " at %s.%s ", class_, method);
|
||||
|
||||
switch (line) {
|
||||
case NativeLine:
|
||||
fprintf(errorLog(t), "(native)\n");
|
||||
#if defined(PLATFORM_WINDOWS)
|
||||
OutputDebugStringA("(native)\n");
|
||||
#endif
|
||||
logTrace(errorLog(t), "(native)\n");
|
||||
break;
|
||||
case UnknownLine:
|
||||
fprintf(errorLog(t), "(unknown line)\n");
|
||||
#if defined(PLATFORM_WINDOWS)
|
||||
OutputDebugStringA("(unknown line)\n");
|
||||
#endif
|
||||
logTrace(errorLog(t), "(unknown line)\n");
|
||||
break;
|
||||
default:
|
||||
fprintf(errorLog(t), "(line %d)\n", line);
|
||||
#if defined(PLATFORM_WINDOWS)
|
||||
OutputDebugStringA("(line ");
|
||||
char buf[35];
|
||||
OutputDebugStringA(itoa(line, buf, 10));
|
||||
OutputDebugStringA(")\n");
|
||||
#endif
|
||||
logTrace(errorLog(t), "(line %d)\n", line);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -4848,7 +4835,7 @@ printTrace(Thread* t, object exception)
|
||||
}
|
||||
}
|
||||
|
||||
fflush(errorLog(t));
|
||||
::fflush(errorLog(t));
|
||||
}
|
||||
|
||||
object
|
||||
|
Loading…
x
Reference in New Issue
Block a user