The POSIX Thread Trace Toolkit (PTT) is a library-level trace tool for. the glibc (GNU C library) thread library (Native POSIX Thread Library or NPTL). It aims to help users to analyze and debug multi-threaded applications using the NPTL under Linux systems.
It is distributed under the GNU Lesser General Public Licence (LGPL).
UsersPTT aims to answer the needs of three kinds of users:
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:
PTT offers the following features:
PTT can be used on several 32 or 64 bits architectures, among which are Intel 32 bits, Intel 64 bits and PowerPC.
In order to analyze NPTL internals, PTT comes with a patch for the glibc that inserts trace points into the following NPTL routines:
pthread_create pthread_mutex_init sem_init pthread_join pthread_mutex_lock sem_open pthread_cancel pthread_mutex_unlock sem_unlink pthread_cond_init pthread_mutex_destroy sem_post pthread_cond_wait pthread_barrier_init sem_wait pthread_cond_signal pthread_barrier_wait sem_trywait pthread_cond_broadcast pthread_barrier_destroy sem_destroy pthread_cond_destroyReliability and performance
PTT reliability is tested using the Open POSIX Tests Suite (OPTS), which checks the POSIX conformance of a library. Experimentations have shown that PTT rarely hangs and only when tracing artificial stress programs.
The impact of PTT on programs is mainly tested with High Performance Computing (HPC) applications. Measures have shown that this impact on performance is very low, even when a lot of threads are involved (less than 5% with 16 concurrent threads on 8xia32).
We expect people facing complex problems with multi-threaded applications to experiment with this tool in order to find and fix the remaining bugs. Comments are welcome...
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4