すべてのシステムコールとライブラリコールをどこで見つけることができますか?
一覧表示できますか?
どのようなことが最も頻繁に発生するかを調べる方法は?
答え1
すべてのプログラムではなく、特定のプログラムのシステム/ライブラリ呼び出しをしたいと思います。
strace
実行可能プログラムのすべての外部呼び出しを表示します。プログラムにグラフィカルユーザーインターフェースがある場合は何千ものものがあるため、「画面から」分析するのは困難です。
すべての呼び出しを保存するには、strace
出力をファイルにリダイレクトするだけです。
strace your_executable 2> my_log_file
プログラムを終了すると閉じます。その後、テキストビューア/エディタでファイルを表示または検索できます。より多くの情報はman strace
以下から得ることができます。linux.die.net/man/1/strace。このページでは、いくつかの興味深い使い方を紹介します。strace
。
完全性のために:スティーブン・ハリス(Stephen Harris)は次のように提案しています。
FWIW, strace -o log_file -f your_executable が良いかもしれません。 -o フラグは strace が出力をそこに送るようにし、-ff はプログラムが fork() を呼び出すとそのサブプロセスも従うことを意味します。アプリケーションによっては、各サブプロセスデータが独自のログファイルにあるように-ffを使用する方が良いかもしれません。 straceはシステムコールを表示し、ltraceはライブラリコールを表示できます。
さらに進むマーク・プロットニック(Mark Plotnick)の言葉:
はい、ltrace -c -Sコマンド...は、ライブラリとシステムコールの数を表示するために使用されます。