Menu Close
3.3.3. ltrace でアプリケーションのライブラリー関数呼び出しの監視
ltrace
ツールは、ライブラリー (共有オブジェクト) で利用可能な関数へのアプリケーションの呼び出しを監視できます。
Red Hat Enterprise Linux 9 では、既知の問題により、ltrace
が実行ファイルを追跡できなくなります。この制限は、ユーザーが構築する実行ファイルには適用されません。
前提条件
-
ltrace
がシステムにインストールされている。
手順
- 可能であれば、対象のライブラリーおよび関数を特定します。
ltrace
を起動し、プログラムに割り当てます。監視するプログラムが実行していない場合は、
ltrace
を起動して、プログラム を指定します。$ ltrace -f -l library -e function program
プログラムがすでに実行中の場合は、プロセス id (pid) を検索して、その id に
ltrace
を割り当てます。$ ps -C program (...) $ ltrace -f -l library -e function program -ppid
-e
オプション、-f
オプション、および-l
オプションを使用して、出力にフィルターを設定します。-
function として表示される関数の名前を指定します。
-e function
オプションは複数回使用できます。何も指定しないと、ltrace
は全関数への呼び出しを表示します。 -
関数を指定する代わりに、
-l library
オプションでライブラリー全体を指定できます。このオプションは、-e function
オプションと同じように動作します。 -
フォークしたプロセスまたはスレッドを追跡しない場合は、
-f
オプションを指定しないでください。
詳細情報は、man ページの ltrace(1) を参照してください。
-
function として表示される関数の名前を指定します。
ltrace
は、アプリケーションにより作成されたライブラリーコールを表示します。多くの場合は、フィルターが設定されていないと、アプリケーションは多数の呼び出しを作成し、
ltrace
の出力がすぐに表示されます。ltrace
は、プログラムが終了すると終了します。追跡しているプログラムの終了前に監視を中断するには、ctrl+C を押します。
-
ltrace
でプログラムを起動した場合には、プログラムはltrace
と共に中断します。 -
実行中のプログラムに
ltrace
を割り当てると、プログラムはltrace
と共に終了します。
-
アプリケーションが実行したライブラリーコールの一覧を分析します。
- アプリケーションがクラッシュした場合、重要な情報はおそらくログの最後にあります。
- 出力には不要な情報が多く含まれています。ただし、より正確なフィルターを作成して、手順を繰り返すことができます。
出力を確認することにも、ファイルに保存することにも利点があります。これを行うには、tee
コマンドを使用します。
$ ltrace ... |& tee your_log_file.log
関連情報
man ページの ltrace (1)
$ man ltrace
- 『Red Hat Developer Toolset User Guide』の 「ltrace」の章