Closed gitttt closed 8 years ago
TracerGrind is more like flushing its queues from time to time and it's hard to predict their order. Once its content is in a DB it doesn't really matter. But for "human readable" traces I would advise you to use TracerPIN instead for your specific case, there everything is perfectly ordered: [T]/[C]/[B]/[R]/[I]/[W]
by DB you mean the sqlite database? Would you say it is easier to get the events in order using the database? Or are they maybe already ordered in the database?
EDIT: I get what you mean. By querying and joining etc. one can the right pairs of instruction- and memory-events
yes sqlite. events will then be on separate tables and you can query the memory events related to one instruction so if you go through the ins table and look for the corresponding ins_id in the mem table you'll get what you want.
The event in texttrace are in the same order than in the trace and it's always the same, it's just the other way around : M, B, I
That's the one you saw in the second example. In your first example you're in a loop (see the [I] 0000000004004e39: jb 0x4004e18
?) and the memory R/W in your example are from the next loop iteration.
Hi!
I am a bit confused by the order of events in a trace. Is it that the [B] event comes first, then all [I] events for all instructions in this basic block, and then all [M] for memory accesses of the instructions in the basic block? This is how it is here (taken from the ls example):
Yet, here is a counter example:
Note that the
INS_ADDRESS: 0000000004004fe3
for example, is not in the basic block withSTART_ADDRESS: 0000000004004e60
.Maybe I misunderstood the order of events. Did I? I am asking because what I would like it the following:
The order of events should be in the order of the actual execution. In particular, the [M] should be right after the corresponding [I]. Can tracergrind do this for me or do I have to process the .texttrace myself?