如何在gdb中设置断点,以便在每次写入名称已知的特定文件时停止程序?
答案 0 :(得分:7)
您可以通过write
让每个catch syscall write
次系统调用停止使用GDB。
由于write
对文件描述符进行操作,而不对命名文件进行操作,因此不能使该断点以名称为条件;你必须首先找到与你的“有趣”文件相对应的文件描述符。
在Linux上,您可以查看ls -l /proc/<pid>/fd/*
以将文件描述符与名称相关联。
其他系统可能具有lsof
或其他系统特定的机制来执行相同操作。
获得文件描述符后,可以使catch
成为条件(因此GDB仅在写入特定文件时停止)。有关如何操作的具体细节因操作系统和处理器而异,您也没有提供。