agnonchik
agnonchik

Reputation: 63

How to stop program in gdb at writing to a particular file known by its name

How can I set a breakpoint in gdb to stop program at every write to a particular file known by its name?

Upvotes: 6

Views: 1845

Answers (1)

Employed Russian
Employed Russian

Reputation: 213955

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.

Upvotes: 8

Related Questions