TOP(サイトマップ) | Solaris man マニュアル | |
(はじめに) はじめに Solarisって・・・ SunのセミナーとSDC Solaris 10概要 資格(SCSA,SCNA) Solarisフォーラム 管理人に連絡 (Solaris基本) Solarisのインストール システムの起動と停止 ファイルシステム オートマウントとマウント パッケージとパッチ ユーザの追加と削除 ファイル権限(セキュリティ) バックアップとリストア CDE環境 プロセス管理/監視 (ネットワーク管理) OSIを理解してみる TCP/IPの設定 (TCP/IP入門) DNSの設定 NISの設定 NFSの設定(WebNFS,CacheFS) (NIS、NIS+、DNS違い) DHCPの設定 1つのNICで複数IP設定 (IO関連) インタフェース概要 SAFの管理 プリンタ管理概要 プリンタコマンド SunSolve Online SCSI情報(KEY,ASC,ASCQ) (ソフトウェア関連) Bash Apache Solstice DiskSuite (SDS OSミラー回復) Veritas VxVM (OBPについて) PROM(OBP)の概要 OBPでのキーボード操作 一般的なOBPコマンド SolarisでOBPの設定 OBPに関するFAQ (トラブル時の対応) 基本情報 エラーメッセージ (主要メッセージ一覧) 性能関連コマンド トレースコマンド クラッシュダンプ SunSolve Online (その他) 小技集 UNIXコマンド (manマニュアル) システムチューニング ネットワークチューニング UltraSPARC T1について (FAQ) rootのPASSが不明 ハングアップかな? ハードトラブル OSが起動しない(b) swap領域の拡張方法 (リンク) Sun関連リンク その他リンク アバウトなJava入門 Perlメモ(逆引き用) |
ユーザーコマンド apptrace(1) 【名前】 apptrace - Solaris 共有ライブラリに対するアプリケーション 関 数呼び出しの追跡 【形式】 apptrace [-f] [ -F [!] tracefromlist] [ -T [!] tracetolist] [-o outputfile] [ [-tv] [!] call , ...] command [ command arguments] 【機能説明】 apptrace ユーティリティは、command で指定された実行可能プ ロ グラムを実行して、プログラムの command が Solaris 共有ライブ ラリに対して行うすべての関数呼び出しを追跡しま す。 apptrace における追跡では、プログラムによる関数呼び出しごとに、呼び出 されたライブラリインタフェースの名前、渡された引数の値、およ び戻り値が報告されます。 デフォルトでは、apptrace は、実行可能オブジェクトからそれ が 依存するすべての共有オブジェクトに対する直接呼出しを追跡しま す。間接呼び出し (つまり、実行可能プログラムが依存する共有オ ブジェクト間で行われた呼び出し) は、デフォルトでは報告されま せん。 追加共有オブジェクトとの間で実行される呼び出しは、-F また は -T オプションを指定することにより追跡できます (下記参照)。 デフォルトのレポート形式は、呼び出しごとに 1 行であり、参 照 によって渡された引数またはデータ構造体のフォーマット出力はあ りません。 追加引数の詳細を示すフォーマット出力は、-v オプションを使 用 すると得られます (下記参照)。 デフォルトでは、共有オブジェクトによって提供され る イ ン タ フェースは、呼び出された場合、すべて追跡されます。ただし、-t または -v オプションのいずれか、あるいは両方を使用することに より、追跡するインタフェース群を制限できます。 通常、実行時にリンクされる動的オブジェクト (実行可能オブジェ クトと依存対象のすべての共有オブジェクト) 間の呼び出しを追跡 することができるため、追跡された各呼び出しのレポートには、呼 び出し元のオブジェクトの名前が示されます。 apptrace は、プロシージャリンケージテーブルを介して動的オ ブ ジェ ク ト間で発生するすべてのプロシージャ呼び出しを追跡しま す。そのため、そのテーブルを介して結合されているプロシージャ 呼び出しだけが追跡されます。『リンカーとライブラリ』を参照し てください。 【オプション】 次のオプションを指定できます。 -f fork(2) によって作成されたすべての子 プロセスを追跡します。また、各行の先 頭にプロセス ID を表示します。 -F [!]tracefromlist コンマで区切られた共有オブジェクトの リストからの呼び出しを追跡します。こ れらの共有オブジェクトからの呼び出し だけが追跡されます。デフォルトでは、 メインの実行可能オブジェクトからの呼 び 出 しだけが追跡されます。共有オブ ジェクトのベース名だけが必要になりま す。 た と え ば、 libc は /usr/lib/libc.so.1 に一致します。 ま た、 fnmatch(5) で説明されているよう に、シェルのワイルドカード文字 が サ ポートされています。! が前に付いたリ ストは、そこからの呼び出しが追跡から 除 外 されるオブジェクト群を定義しま す。command からの呼び出しの追跡が必 要 な 場合、command は tracefromlist のメンバーでなければなりません。 -o outputfile apptrace の出力を outputfile に送 り ま す。デフォルトでは、apptrace の出 力は、追跡されるプロセスの stderr ス トリームに送られます。 -t [!]call,... 関数呼び出しを追跡、または除外 し ま す。コンマで区切られたリスト call に 指定された呼び出しが追跡されます。こ の リストが ! で始まる場合、指定され た関数呼び出しが追跡出力から除外され ます。デフォルト値は -t * です。シェ ルスタイルのワイルドカードを使用でき ます。 -T [!]tracetolist コンマで区切られた共有オブジェクトの リ ス トへの呼び出しを追跡します。デ フォルトでは、すべての共有オブジェク トへの呼び出しが追跡されます。上記と 同様、ベース名だけが必要であり、ワイ ルドカードを使用できます。! が前に付 いたリストは、そこへの呼び出しが追跡 から除外されるオブジェクト群を示しま す。 -v [!]call,... 指定された関数呼び出しの引数と戻り値 を示す冗長な、フォーマット出力を提供 します (前述の -t オプションと 同 様 )。 truss(1) と違って、-v オプション で指定した呼び出しは、-t オプショ ン で 指 定する必要はありません。たとえ ば、apptrace -v open は、 truss -t open -v open と同じです。 【使用例】 例 1: date コマンドの追跡 % apptrace date -> date -> libc.so.1:atexit(0xff3bf9ac, 0x22000, 0x0) ** NR -> date -> libc.so.1:atexit(0x11550, 0xfefeef80, 0xab268) ** NR -> date -> libc.so.1:setlocale(0x6, 0x11560, 0x0) ** NR -> date -> libc.so.1:textdomain(0x11564, 0xfefce156, 0xff160200) ** NR -> date -> libc.so.1:int getopt(int = 0x1, const char * * = 0xffbffa5c, const char * = 0x11574 "a:u") <- date -> libc.so.1:getopt() = 0xffffffff -> date -> libc.so.1:time_t time(time_t * = 0x225c0) <- date -> libc.so.1:time() = 0x41ab6e82 -> date -> libc.so.1:char * nl_langinfo(nl_item = 0x3a) <- date -> libc.so.1:nl_langinfo() = 0xfefd3e10 -> date -> libc.so.1:struct tm * localtime(const time_t * = 0x225c0) <- date -> libc.so.1:localtime() = 0xff160240 -> date -> libc_psr.so.1:memcpy(0xffbff9cc, 0xff160240, 0x24) ** NR -> date -> libc.so.1:size_t strftime(char * = 0x225c4 "", size_t = 0x400, const char * = 0xfefd3e10 "%a %b %e %T %Z %Y", const struct tm * = 0xffbff9cc) <- date -> libc.so.1:strftime() = 0x1c -> date -> libc.so.1:int puts(const char * = 0x225c4 "Mon Nov 29 10:46:26 PST 2004") Mon Nov 29 10:46:26 PST 2004 <- date -> libc.so.1:puts() = 0x1d -> date -> libc.so.1:exit(0x0, 0x22400, 0x0) ** NR 例 2: 冗長性セットによる特定のインタフェース群の追跡 % apptrace -v localtime,strftime,puts date -> date -> libc.so.1:struct tm * localtime(const time_t * = 0x225c0) arg0 = (const time_t *) 0x225c0 return = (struct tm *) 0xff160280 (struct tm) { tm_sec: (int) 0x4 tm_min: (int) 0x34 tm_hour: (int) 0xa tm_mday: (int) 0x1d tm_mon: (int) 0xa tm_year: (int) 0x68 tm_wday: (int) 0x1 tm_yday: (int) 0x14d tm_isdst: (int) 0 } <- date -> libc.so.1:localtime() = 0xff160280 -> date -> libc.so.1:size_t strftime(char * = 0x225c4 "", size_t = 0x400, const char * = 0xfefd3e10 "%a %b %e %T %Z %Y", const struct tm * = 0xffbff99c) arg0 = (char *) 0x225c4 "" arg1 = (size_t) 0x400 arg2 = (const char *) 0xfefd3e10 "%a %b %e %T %Z %Y" arg3 = (const struct tm *) 0xffbff99c (struct tm) { tm_sec: (int) 0x4 tm_min: (int) 0x34 tm_hour: (int) 0xa tm_mday: (int) 0x1d tm_mon: (int) 0xa tm_year: (int) 0x68 tm_wday: (int) 0x1 tm_yday: (int) 0x14d tm_isdst: (int) 0 } return = (size_t) 0x1c <- date -> libc.so.1:strftime() = 0x1c -> date -> libc.so.1:int puts(const char * = 0x225c4 "Mon Nov 29 10:52:04 PST 2004") arg0 = (const char *) 0x225c4 "Mon Nov 29 10:52:04 PST 2004" Mon Nov 29 10:52:04 PST 2004 return = (int) 0x1d <- date -> libc.so.1:puts() = 0x1d ** NR - 関数呼び出しの戻り値は追跡できません。 【ファイル】 apptrace の基本実行時サポートは Solaris 実 行 時 リ ン カー (ld.so.1(1)) のリンク監査機能によって提供され、apptrace コマ ンドは、/usr/lib/abi に格納されている 監 査 オ ブ ジェ ク ト (apptrace.so.1) に依存してこの機能を使用します。 【制限事項】 一般に、apptrace は、変数引数リストを受け付ける関数への呼 び 出 し を 追 跡 す ることはできません。一部の特別な場合、特に printf および scanf ファミリでは、この制限事項に対処するため に、適切なコーディング方法がいくつか用いられています. apptrace ユーティリティは、戻り値のタイプが struct ま た は union である関数呼び出しの戻り値を追跡することができません。 スタックを調べようとする関数、または呼び出し元に関する情報を 抽 出 し よ う と す る 関 数 は 追 跡できません。たとえば、 [gs]etcontext()、 [sig]longjmp()、[sig]setjmp()、vfork() が これに相当します。 exit(2) などの値を返さない関数では、戻り値については追跡され ません。 セキュリティ上の理由から、適切な特権を持つプロセ ス だ け が apptrace を使用して setuid/setgid プログラムを追跡できます。 varargs.h の取り込みを必要とする関数 (vwprintw(3XCURSES) や vwscanw(3XCURSES) など) を追跡するときは、引数の出力は書式化 されません。 【属性】 次の属性については、attributes(5)のマニュアルページを参照 し てください。 ____________________________________________________________ | 属性タイプ | 属性値 | |_____________________________|_____________________________| | 使用条件 | SUNWcstl (32 ビット) | |_____________________________|_____________________________| | | SUNWcstlx (64 ビット) | |_____________________________|_____________________________| | インタフェースの安定性 | 不安定 | |_____________________________|_____________________________| 【関連項目】 ld.so.1(1), truss(1), vwprintw(3XCURSES), vwscanw(3XCURSES), attributes(5), fnmatch(5) リンカーとライブラリ |
|