Code Yarns ‍👨‍💻
Tech BlogPersonal Blog

How to trace files opened or closed by program

📅 2014-May-06 ⬩ ✍️ Ashwin Nanjappa ⬩ 📚 Archive

Problem

This is a typical problem in scientific computing programs. The code is huge and hairy. The program opens, reads or writes hundreds of files. You want to figure out what files the program is opening, reading or writing.

Solution

Thanks to Rohan for suggesting to use strace for this. It captures the system calls called by your program during execution. The system calls related to files is open and close. This information can be captured by this command:

$ strace -e trace=open,close -o trace.log ./foobar

The output can be found in the file trace.log after the program exits.

If you just need the files opened:

$ strace -e trace=open -o trace.log ./foobar

Tried with: Ubuntu 14.04