PTT helps users to analyze and understand correction and performance problems for multi-threaded applications. It shows when a program calls NPTL routines and when it exits from them, with details about the internal mechanisms of the library.
Three different trace formats are provided: a machine readable text format, a human readable text format, and a graphical format. The graphical format is obtained thanks to Pajé, an interactive visualization tool.
PTT aims to answer the needs of three kinds of users:
· a developer writting multi-threaded applications mainly wants to trace calls to and exits from NPTL routines, with details about parameters. He needs to easily switch from the original untraced NPTL to the traced library, and vice-versa, without recompiling his application.
· a member of a Linux support team providing skills to people who write, test or use applications. He has strong skills about the Linux kernel and glibc, therefore he needs to see what happens inside NPTL. He also wants to be able to analyze in his own offices traces generated at customers site.
· a maintainer of the glibc wants to analyze the behaviour of NPTL and fix problems, which is not an easy task. PTT provides him with traces of internal NPTL events.
Here are some key features of "PTT":
A multi-threaded application can be traced without being recompiling. The trace is analyzed once the application stopped: it is a post-mortem analysis. Three different trace formats are provided:
· a human readable text format.
· a "machine" readable text format. This text format is easily parsable by other programs to extract useful information.
· a graphical format, obtained thanks to Pajé, an interactive visualization tool, available in the testing and unstable Debian distributions.
PTT offers the following features:
· trace cut: it is possible to only work on a part of the trace, selected with temporal or numeric criteria.
· trace split: it is possible to split the trace into several files to get either one file per process or one file per thread.
· trace filtering: it is possible to filter the trace on various criteria, such as event names, object names, kind of objects or pid.
· log levels: it is possible to dynamically switch from light to richer or full trace.
· continuous recording: the tool can keep only last traces of the execution.
· handle large volume of traces.
· handle bad situations (hang, crash, kill).
· thread contention analysis will soon be available.