Often when trying to determine the cause of a problem we ask for a diagnostic trace, but what is a trace and what information does it contain? Essentially a trace is just a faithful history of the events that took place, either at a protocol level or the API level. In the case of a protocol trace, this is the conversation between the local machine and the remote one, or in the case of an API trace it is the history of how the user application interacted with the driver software.

Like real-life history, a trace only records the events; it does not reveal the motivation of the parties involved and it doesn’t always reveal whether any events are “good” or “bad” in any objective sense. On UK TV at the moment there is a series called The Tudors, chiefly a history of the life of Henry VIII, possibly England’s most famous King. This is a well-documented part of history (you could say that it has been “traced” at many levels), so for example we know well that Henry was born in 1491, and died in 1547, and we know that he married six times, starting with Catherine of Aragon. We know that Henry divorced Catherine, but what history does not record is whether you or I think that this was a bad idea. I might see it as a benefit, in that Henry got to continue his quest for an heir, whereas you might think that he should have kept the Pope and the Catholic Church happy. These are questions of opinion and expectation.

So it is with traces. You might consider an event to be “bad” whereas I might just think it inevitable. This is why it is so important to have a problem description as well as a trace: when you state the “problem” from your perspective you are comparing what you expected to happen with what actually happened. The trace merely offers a supporting story that can be the basis for detective work. It’s also important to have a problem description as it brings focus on the important part of the story. Sometimes we receive large traces accompanied with the briefest of comments, for example “the call didn’t work”, which makes it a very long and tedious process to find the story we are looking for. If you sent me a history that includes the whole of British history, then I might find the story of Richard III fascinating, but it doesn’t help you if you’re interested in Anne Boleyn.

One problem I recently saw comes with over 400 Mbyte of (compressed) traces. Luckily we do have a problem description for that one, otherwise we’d still be analyzing it for the coronation of William V.