From: Milian Wolff Date: Wed, 21 May 2014 19:59:04 +0000 (+0200) Subject: Skip instructions which we cannot make sense of. X-Git-Tag: submit/tizen/20180620.112952^2~519 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1cfb730a48a445e2d2af9719f056fb5f9df74470;p=sdk%2Ftools%2Fheaptrack.git Skip instructions which we cannot make sense of. --- diff --git a/malloctrace.cpp b/malloctrace.cpp index 5a3052e..c66b311 100644 --- a/malloctrace.cpp +++ b/malloctrace.cpp @@ -259,17 +259,17 @@ struct Data for (auto& ip : traceBuffer) { auto ipIt = ipCache.find(ip); if (ipIt == ipCache.end()) { - auto ipId = next_ipCache_id++; // find module and offset from cache auto module = lower_bound(modules.begin(), modules.end(), ip, [] (const Module& module, const unw_word_t addr) -> bool { return module.baseAddress + module.size < addr; }); - if (module != modules.end()) { - fprintf(out, "i %u %u %lx\n", ipId, module->id, ip - module->baseAddress); - } else { - fprintf(out, "i %u 0 %lx\n", ipId, ip); + if (module == modules.end()) { + ip = numeric_limits::max(); + continue; } + auto ipId = next_ipCache_id++; + fprintf(out, "i %u %u %lx\n", ipId, module->id, ip - module->baseAddress); ipIt = ipCache.insert(ipIt, {ip, ipId}); } ip = ipIt->second; @@ -277,6 +277,9 @@ struct Data // print trace fprintf(out, "t %u ", traceId); for (auto ipId : traceBuffer) { + if (ipId == numeric_limits::max()) { + continue; + } fprintf(out, "%lu ", ipId); } fputc('\n', out);