The perfect strace command

Posted on Fri 17 October 2025 in Operating Systems, Debugging • Tagged with Operating Systems, Debugging

The Linux utility strace is essential for diagnosing process–kernel interactions, but its default output is often unusable. The key to effective debugging is using a specific set of flags that transform raw system call data into a structured, time‑stamped, and annotated log.

According to Avikam Rozenfeld in this presentation, here is the essential command template, followed by a breakdown of why each flag is critical:

strace -f -s 256 -o trace.log -tt -T -y <your_command_here>

Flags and why they matter:

  • -f — Follow children
    Purpose: Trace child processes spawned by fork/clone.
    Key benefit: Ensures you trace the entire application flow (e.g., piped commands).

  • -s 256 — Increase string size
    Purpose: Increase the string output limit (default 32 bytes) to 256 bytes.
    Key benefit: Prevents truncation of file paths and data being read or written.

  • -o — Output to file
    Purpose: Redirect all strace output to a specified log file (e.g., trace.log).
    Key benefit: Separates trace output from the program's standard output for easier analysis.

  • -tt — Precise timestamp
    Purpose: Prefix every line …


Continue reading