How can I set a breakpoint in gdb to stop program at every write to a particular file known by its name?
You can get GDB to stop on every write
system call with catch syscall write
.
Since write
operates on file descriptors, and not on named files, you can't make this breakpoint conditional on the name; you'll have to find out the file descriptor that corresponds to your "interesting" file first.
On Linux, you can look at ls -l /proc/<pid>/fd/*
to associate file descriptors with names.
Other systems may have lsof
, or other system-specific mechanisms for doing the same.
Once you have the file descriptor, you can make the catch
conditional (so GDB stops only when that particular file is written). The exact details of how to do that differ between operating systems and processors, and you didn't supply either.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With