X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=retrace.cpp;h=d2e6d379b06d283ca729e1712e80a22044103189;hb=97b37f0550e6373cc06fff3b74279e5589441484;hp=412c73b8061e6ecd975ecc32581250dcb7fe8440;hpb=b4a3d1495a5e92ba23bf463bcea34a6e75b55294;p=apitrace diff --git a/retrace.cpp b/retrace.cpp index 412c73b..d2e6d37 100644 --- a/retrace.cpp +++ b/retrace.cpp @@ -27,6 +27,8 @@ #include #include +#include "os_time.hpp" +#include "trace_dump.hpp" #include "retrace.hpp" @@ -34,6 +36,7 @@ namespace retrace { int verbosity = 0; +bool profiling = false; static bool call_dumped = false; @@ -84,7 +87,10 @@ void Retracer::retrace(trace::Call &call) { call_dumped = false; if (verbosity >= 1) { - dumpCall(call); + if (verbosity >= 2 || + !(call.flags & trace::CALL_FLAG_VERBOSE)) { + dumpCall(call); + } } Callback callback = 0; @@ -110,7 +116,20 @@ void Retracer::retrace(trace::Call &call) { assert(callback); assert(callbacks[id] == callback); - callback(call); + if (retrace::profiling) { + long long startTime = os::getTime(); + callback(call); + long long stopTime = os::getTime(); + float timeInterval = (stopTime - startTime) * (1.0E6 / os::timeFrequency); + + std::cout + << call.no << " " + << "[" << timeInterval << " usec] " + ; + trace::dump(call, std::cout, trace::DUMP_FLAG_NO_CALL_NO | trace::DUMP_FLAG_NO_COLOR); + } else { + callback(call); + } }