From 8e5aa9b1bd308d4184a5543cb2cec1447ccf6900 Mon Sep 17 00:00:00 2001 From: Horst Schirmeier Date: Tue, 25 Jun 2013 17:15:39 +0200 Subject: [PATCH] tools/dump-trace: dump extended traces properly Output formatting was broken for extended traces (with register data information etc.) before. Change-Id: I48ca548ab29ecc855d803ce46a7713ef801f53f0 --- tools/dump-trace/DumpTrace.cc | 31 ++++++++++++++----------------- 1 file changed, 14 insertions(+), 17 deletions(-) diff --git a/tools/dump-trace/DumpTrace.cc b/tools/dump-trace/DumpTrace.cc index e9baa2cf..48c3826c 100644 --- a/tools/dump-trace/DumpTrace.cc +++ b/tools/dump-trace/DumpTrace.cc @@ -1,6 +1,6 @@ #include #include -#include +#include #include "comm/TracePlugin.pb.h" #include "util/ProtoStream.hpp" #include "../../src/core/util/Logger.hpp" @@ -8,7 +8,7 @@ #include "util/CommandLine.hpp" using namespace fail; -using std::string; +using std::stringstream; using std::endl; using std::cout; using std::cerr; @@ -98,26 +98,23 @@ int main(int argc, char *argv[]) cout << "IP " << hex << ev.ip() << dec << " t=" << acctime << "\n"; } } else { - string ext = ""; // FIXME: use stringstream? + stringstream ext; if (ev.has_trace_ext() && !stats_only) { const Trace_Event_Extended& temp_ext = ev.trace_ext(); - ext = " DATA "; - ext += temp_ext.data(); - int i; - for (i = 0 ; i < temp_ext.registers_size() ; i++) { + ext << " DATA " << std::hex; + ext << (uint64_t) temp_ext.data(); + for (int i = 0; i < temp_ext.registers_size(); i++) { const Trace_Event_Extended_Registers& temp_reg = temp_ext.registers(i); - ext += "REG: " ; - ext += temp_reg.id(); - ext += " "; - ext += temp_reg.value(); - ext += "="; - ext += temp_reg.value_deref(); + ext << " REG " + << (unsigned) temp_reg.id() << " = " + << (uint32_t) temp_reg.value() << " -> " + << (uint32_t) temp_reg.value_deref(); } if (temp_ext.stack_size() > 0 ) { - ext += " STACK: "; - for (i = 0 ; i< temp_ext.stack_size() ; i++) { + ext << " STACK:"; + for (int i = 0; i < temp_ext.stack_size(); i++) { const Trace_Event_Extended_Stack& temp_stack = temp_ext.stack(i); - ext += temp_stack.value(); + ext << " " << (uint32_t) temp_stack.value(); } } } @@ -128,7 +125,7 @@ int main(int argc, char *argv[]) << dec << " width " << ev.width() << hex << " IP " << ev.ip() << dec << " t=" << acctime - << ext << "\n"; + << ext.str() << "\n"; } stats_reads += (ev.accesstype() == Trace_Event_AccessType_READ); stats_writes += (ev.accesstype() == Trace_Event_AccessType_WRITE);