tools/dump-trace: dump extended traces properly
Output formatting was broken for extended traces (with register data information etc.) before. Change-Id: I48ca548ab29ecc855d803ce46a7713ef801f53f0
This commit is contained in:
@ -1,6 +1,6 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <fstream>
|
#include <fstream>
|
||||||
#include <string>
|
#include <sstream>
|
||||||
#include "comm/TracePlugin.pb.h"
|
#include "comm/TracePlugin.pb.h"
|
||||||
#include "util/ProtoStream.hpp"
|
#include "util/ProtoStream.hpp"
|
||||||
#include "../../src/core/util/Logger.hpp"
|
#include "../../src/core/util/Logger.hpp"
|
||||||
@ -8,7 +8,7 @@
|
|||||||
#include "util/CommandLine.hpp"
|
#include "util/CommandLine.hpp"
|
||||||
|
|
||||||
using namespace fail;
|
using namespace fail;
|
||||||
using std::string;
|
using std::stringstream;
|
||||||
using std::endl;
|
using std::endl;
|
||||||
using std::cout;
|
using std::cout;
|
||||||
using std::cerr;
|
using std::cerr;
|
||||||
@ -98,26 +98,23 @@ int main(int argc, char *argv[])
|
|||||||
cout << "IP " << hex << ev.ip() << dec << " t=" << acctime << "\n";
|
cout << "IP " << hex << ev.ip() << dec << " t=" << acctime << "\n";
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
string ext = ""; // FIXME: use stringstream?
|
stringstream ext;
|
||||||
if (ev.has_trace_ext() && !stats_only) {
|
if (ev.has_trace_ext() && !stats_only) {
|
||||||
const Trace_Event_Extended& temp_ext = ev.trace_ext();
|
const Trace_Event_Extended& temp_ext = ev.trace_ext();
|
||||||
ext = " DATA ";
|
ext << " DATA " << std::hex;
|
||||||
ext += temp_ext.data();
|
ext << (uint64_t) temp_ext.data();
|
||||||
int i;
|
for (int i = 0; i < temp_ext.registers_size(); i++) {
|
||||||
for (i = 0 ; i < temp_ext.registers_size() ; i++) {
|
|
||||||
const Trace_Event_Extended_Registers& temp_reg = temp_ext.registers(i);
|
const Trace_Event_Extended_Registers& temp_reg = temp_ext.registers(i);
|
||||||
ext += "REG: " ;
|
ext << " REG "
|
||||||
ext += temp_reg.id();
|
<< (unsigned) temp_reg.id() << " = "
|
||||||
ext += " ";
|
<< (uint32_t) temp_reg.value() << " -> "
|
||||||
ext += temp_reg.value();
|
<< (uint32_t) temp_reg.value_deref();
|
||||||
ext += "=";
|
|
||||||
ext += temp_reg.value_deref();
|
|
||||||
}
|
}
|
||||||
if (temp_ext.stack_size() > 0 ) {
|
if (temp_ext.stack_size() > 0 ) {
|
||||||
ext += " STACK: ";
|
ext << " STACK:";
|
||||||
for (i = 0 ; i< temp_ext.stack_size() ; i++) {
|
for (int i = 0; i < temp_ext.stack_size(); i++) {
|
||||||
const Trace_Event_Extended_Stack& temp_stack = temp_ext.stack(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()
|
<< dec << " width " << ev.width()
|
||||||
<< hex << " IP " << ev.ip()
|
<< hex << " IP " << ev.ip()
|
||||||
<< dec << " t=" << acctime
|
<< dec << " t=" << acctime
|
||||||
<< ext << "\n";
|
<< ext.str() << "\n";
|
||||||
}
|
}
|
||||||
stats_reads += (ev.accesstype() == Trace_Event_AccessType_READ);
|
stats_reads += (ev.accesstype() == Trace_Event_AccessType_READ);
|
||||||
stats_writes += (ev.accesstype() == Trace_Event_AccessType_WRITE);
|
stats_writes += (ev.accesstype() == Trace_Event_AccessType_WRITE);
|
||||||
|
|||||||
Reference in New Issue
Block a user