ファイルのトレース
straceコマンドをつけてコマンドを実行すると、そのコマンドがコールしたシステムコールがすべてエラー出力に書き出される。しかしこれだと情報が多すぎるので、-e trace=を指定して、トレースするシステムコールを制限する。以下のコマンドはopenとwriteのみをトレースする。
$ strace -e trace=open,write 2>&1 gedit | less
しかしこれだとwriteのところを見ても第一引数はfdなのでファイル名が分からない。openしたときの戻り値がここには入るはずなので、それで検索して見つけるしかないか?いいツールがあるのかもしれない。
gconfのトレース
これは簡単。環境変数のGCONF_DEBUG_TRACE_CLIENTを設定すればいい。
$ GCONF_DEBUG_TRACE_CLIENT=1 gedit
出力も分かりやすい。