Overview¶
Tracer is tool for collecting data from running applications. Collected data are written to JSON file at end of tracing. Huge data like captures above descriptors or regions are placed in files. Tracer currently collects following data:
process
hiearchy
parent process
program executable and arguments
list of all switched working directories
environment variables at start of the process
exit code
thread or process
mmaped regions
- address
- size
- region protection (currently at mmap call)
- flags
- descriptor for non-anonymous mmaps
- experimental track of non-anonymous region pages in memory
- mmap memory content capture
reads and writes in descriptors
type (file, pipe, socket)
socket addresses for both sides
backtrace of descriptor creation
process who opened descriptor (could be easier to find out who did not set CLOEXEC)
operations
- backtrace where data was read or written
- size of data
- seeks?
written/read content
Traced processes are inspected by ptrace system call (same as strace is using) so there is some overhead. Collected data can be visualized with tracer-gui
This tool is using python-ptrace library for communication with ptrace.