sotrussやapptraceによる実行コマンドのトレース:UNIX処方箋
「事件は枯れたシステムが稼働する現場で起こってるんだ」と現場ですぐに役立つ知識を欲するあなたに贈る珠玉のTips集。今回は、実行コマンドが使用している共有ライブラリや関数を知るための方法を紹介する。
現在、Solaris 8を利用しています。実行コマンドが使用している共有ライブラリや関数を知りたいのですが、どのような方法で調査できますか?
実行中のコマンドが使用しているライブラリや関数は、sotrussコマンドやapptraceコマンドで調査できます。以下に、各コマンドの特徴や使用方法を説明しておきます。
共有ライブラリをトレースするsotruss
sotrussコマンドは、共有ライブラリ関数の呼び出しをトレースするものです。これを使用するには、インストールメディアの中にあるProgramming Tools(パッケージ名SUNWtoo)を導入しておく必要があります。
sotrussコマンドの書式は、次のとおりです。
sotruss [<オプション>] <コマンド>
オプションとしては、実行プロセス番号を表示する「-f」オプションなどが指定可能です。詳細については、sotrussのオンラインマニュアルを参照してください。
ここで、「nslookup www.dtc.co.jp」に対して調査した結果を示しておきます(実行例1)。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ここでは、
nslookup -> libc.so.1:*atexit(0xff3bce64, 0x2b400, 0x0)
のように出力されていますが、それぞれ次のような内容を示しています。
nslookup:実行コマンド
libc.so.1:実行コマンドから呼び出されたライブラリ名
*atexit:呼び出されたライブラリ関数
(0xff3bce64, 0x2b400, 0x0):ライブラリ関数の引数(最大3つまで)
アプリケーション関数をトレースするapptrace
apptraceコマンドは、アプリケーション関数の呼び出しをトレースするものです。これを使用するには、Solaris 8以降の環境で、Apptrace Utility(パッケージ名SUNWcstl/SUNWcstlx*)を導入しておく必要があります。
apptraceコマンドの書式は、次のとおりです。
apptrace[<オプション>]<バイナリ名またはライブラリ名>
オプションとしては、指定ライブラリの動作のみ追跡する「-T」オプションなどがあります。詳細については、apptraceのオンラインマニュアルを参照してください。
先ほどの「nslookup www.dtc.co.jp」に対して実行すると、実行例2のような結果が出力されます。
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
ここでは、
nslookup -> libc.so.1:_fprintf(0x2ed68, 0x1b208, 0x19) www.dtc.co.jp
のように出力されていますが、それぞれ次のような内容を示しています。
nslookup:実行コマンド
libc.so.1:実行コマンドから呼び出されたライブラリ名
_fprintf:呼び出されたライブラリ関数
(0x2ed68, 0x1b208, 0x19):ライブラリ関数の引数
www.dtc.co.jp:ライブラリ関数の復帰値
*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***
このページで出てきた専門用語
SUNWcstl/SUNWcstlx
SUNWcstlは32ビット環境用、SUNWcstlxは64ビット環境用。
関連記事
- TCP遅延肯定応答タイマーのタイムアウト値の変更
- 複数のマシンで効率的にシャットダウンする方法
- WWW::MechanizeモジュールによるWebアクセスの自動化
- IPv6アドレスの自動生成による不具合解消法
- キャッシュファイルを利用したNFSマウント
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.