この prex セッションのサンプルは、prex のさまざまな機能を紹介できるように作られています。cookie を実行するときに収集されるデータは、「tnfdump ファイルの読み取り」に示しています。
% prex cookie /* prex によって、実行可能プログラム cookie がロードされます。*/
Target process stopped
Type "continue" to resume the target, "help" for help ...
prex> list sets
$all 'keys'=/.*/ /* エイリアス $all が 1 つ定義されています
--- (すべてのプローブです)。*/
prex> list fcns
&debug tnf_probe_debug /* デバッグ関数は、使用可能な唯一の関数です。*/
prex> list probes $all
name=inloop enable=off trace=on file=cookie.c line=35 funcs=<no value>
name=factor_end enable=off trace=on file=cookie.c line=72 funcs=<no value>
name=factor_start enable=off trace=on file=cookie.c line=61 funcs=<no value>
name=found_a_factor enable=off trace=on file=cookie.c line=67 funcs=<no value>
name=start enable=off trace=on file=cookie.c line=17 funcs=<no value>
prex>/* 行番号は、5 つのプローブのそれぞれの最終行を示しています。*/
prex> create $factor /factor/ /* "keys" 属性に文字列 "factor" が含まれている
プローブと一致する新しいセットを作成します。*/
prex>
prex> list sets
$all 'keys'=/.*/
$factor 'keys'=/factor/
/* "factor" という名前の新しいセットが作成されて、そのセットが表示されています。*/
prex>
/* セットの一覧 */
prex> list probes $factor
/* この行によって、どのプローブがそのセットと一致しているかがわかります。*/
name=factor_end enable=off trace=on file=cookie.c line=72 funcs=<no value>
name=factor_start enable=off trace=on file=cookie.c line=61 funcs=<no value>
name=found_a_factor enable=off trace=on file=cookie.c line=67 funcs=<no value>
prex> list probes $all /* 有効なプローブがあるかどうか検査します。*/
name=inloop enable=off trace=on file=cookie.c line=35 funcs=<no value>
name=factor_end enable=off trace=on file=cookie.c line=72 funcs=<no value>
name=factor_start enable=off trace=on file=cookie.c line=61 funcs=<no value>
name=found_a_factor enable=off trace=on file=cookie.c line=67 funcs=<no value>
name=start enable=off trace=on file=cookie.c line=17 funcs=<no value>
prex> /* 有効なプローブはありませんが、
どのプローブもトレースはオンになっています。*/
prex> enable $all /* すべてのプローブを有効にします。*/
prex> list probes $all /* 有効なプローブがあるかどうか、再度検査します。*/
name=inloop enable=on trace=on file=cookie.c line=35 funcs=<no value>
name=factor_end enable=on trace=on file=cookie.c line=72 funcs=<no value>
name=factor_start enable=on trace=on file=cookie.c line=61 funcs=<no value>
name=found_a_factor enable=on trace=on file=cookie.c line=67 funcs=<no value>
name=start enable=on trace=on file=cookie.c line=17 funcs=<no value
prex> list values name /* プローブの名前を調べます。*/
name =
factor_end
factor_start
found_a_factor
inloop
start
prex> list values /.*/ /* 定義済みの属性とその値をすべて表示します。*/
enable = /* 固有の属性だけを表示します。*/
on
file =
cookie.c
funcs =
keys =
cookie
factor
find_factor
loop
main
line =
17
35
61
67
72
name =
factor_end
factor_start
found_a_factor
inloop
start
object =
cookie
slots =
factor
input_number
loop_count
searching_for
total_iterations
sunw%debug = /* ユーザー定義のマクロ sunw%debug も表示されています。*/
in /* このマクロは、cookie.c の 17 行目で定義されています。*/
loop
main
starting
the
trace =
on
prex> list values object
object =
cookie
prex> connect &debug name=inloop
prex> list /.*/ probes $all /* すべてのプローブの情報をすべて表示します。*/
enable=on trace=on object=cookie funcs=<no value> name=inloop slots=loop_count
total_iterations keys=cookie main loop file=cookie.c line=35 sunw%debug=in the loop
enable=on trace=on object=cookie funcs=<no value> name=factor_end slots=<no value>
keys=factor file=cookie.c line=72
enable=on trace=on object=cookie funcs=<no value> name=factor_start slots=input_number
keys=factor file=cookie.c line=61
enable=on trace=on object=cookie funcs=<no value> name=found_a_factor slots=searching_for
factor keys=cookie find_factor file=cookie.c line=67
enable=on trace=on object=cookie funcs=<no value> name=start slots=<no value>
keys=cookie
main file=cookie.c line=17 sunw%debug=starting main
prex> continue
give me a COOKIE! loop
/* ループカウントの例 */
probe inloop; sunw%debug "in the loop"; loop_count=0; total_iterations=0;
probe inloop; sunw%debug "in the loop"; loop_count=1; total_iterations=1;
probe inloop; sunw%debug "in the loop"; loop_count=2; total_iterations=2;
probe inloop; sunw%debug "in the loop"; loop_count=3; total_iterations=3;
probe inloop; sunw%debug "in the loop"; loop_count=4; total_iterations=4;
give me a COOKIE! factor
number you want factored? 25
factors of 25 = 5 5
give me a COOKIE! factor
number you want factored? 43645729
factors of 43645729 = 43645729
give me a COOKIE! ^C Target process stopped
Type "continue" to resume the target, "help" for help...
prex> continue
give me a COOKIE! biscuit
not a biscuit, give me a COOKIE! cookie
not a cookie, give me a COOKIE! COOKIE
thanks!
prex: target process finished