Systeem Tracing met bpftrace

Op moderne Linux machines kun je bijna alles van het kernel en userspace inspecteren met eBPF, de Extended Berkeley Packet Filter. Oorspronkelijk bedoelt voor firewalls is dat nu uitgegroeid tot een framework voor volledige systeem tracing.

Voor de fossielen onder ons: Denk SystemTap, maar dan meer gestandaardiseerd, en zonder rare kernel modules.

Één van de makkelijkste manieren om met eBPF te werken op een Linux systeem is met het tooltje bpftrace. bpftrace laat je programma’s schrijven met een syntax die wat lijkt op awk, en die je rechtstreeks vanaf de commandline kunt laten uitvoeren. Dit is niet de enige, of de beste, methode, maar wel een heel erg toegankelijke.

Debugging met strace en ltrace

Soms heb je een probleem waar je met de gewone foutmeldingen of logging niet uitkomt. Applicaties die alleen maar zeggen “File not found”, maar niet zeggen welk pad ze proberen te openen bijvoorbeeld. In dat soort gevallen zou je naar een volledige, zware, debugger als gdb kunnen grijpen, maar je kunt ook eerst iets eenvoudigers proberen.