Unixでシステムコールとライブラリコールをリストする方法は? [閉鎖]

Unixでシステムコールとライブラリコールをリストする方法は? [閉鎖]

すべてのシステムコールとライブラリコールをどこで見つけることができますか?

一覧表示できますか?

どのようなことが最も頻繁に発生するかを調べる方法は?

ベストアンサー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コマンド...は、ライブラリとシステムコールの数を表示するために使用されます。

おすすめ記事