trace::Parser parser;
+trace::Profiler profiler;
int verbosity = 0;
bool debug = true;
bool profiling = false;
+bool profileGPU = false;
+bool dumpingState = false;
bool doubleBuffer = true;
bool coreProfile = false;
-static unsigned frameNo = 0;
+unsigned frameNo = 0;
void
addCallbacks(retracer);
long long startTime = 0;
+ frameNo = 0;
startTime = os::getTime();
trace::Call *call;
if (waitOnFinish) {
waitForInput();
} else {
- exit(0);
+ return;
}
}
static void
usage(const char *argv0) {
std::cout <<
- "Usage: " << argv0 << " [OPTION] TRACE\n"
+ "Usage: " << argv0 << " [OPTION] TRACE [...]\n"
"Replay TRACE.\n"
"\n"
" -b benchmark mode (no error checking or warning messages)\n"
extern "C"
int main(int argc, char **argv)
{
+ using namespace retrace;
+
assert(compareFrequency.empty());
assert(snapshotFrequency.empty());
retrace::debug = false;
retrace::profiling = true;
retrace::verbosity = -1;
+ } else if (!strcmp(arg, "-pgpu")) {
+ retrace::profileGPU = true;
} else if (!strcmp(arg, "-c")) {
comparePrefix = argv[++i];
if (compareFrequency.empty()) {
}
} else if (!strcmp(arg, "-D")) {
dumpStateCallNo = atoi(argv[++i]);
+ dumpingState = true;
retrace::verbosity = -2;
} else if (!strcmp(arg, "-core")) {
retrace::coreProfile = true;
retrace::parser.close();
}
- retrace::cleanUp();
+ // XXX: X often hangs on XCloseDisplay
+ //retrace::cleanUp();
return 0;
}