From: KOSAKI Motohiro Date: 2010-01-10T15:15:04+09:00 Subject: [ruby-dev:40016] Re: yuguiさんのvm_probesのsystemtap対応 --00504501416d4bebab047cc95755 Content-Type: text/plain; charset=ISO-2022-JP Content-Transfer-Encoding: 7bit kosaki です。 SystemTap用にライブラリスクリプトとサンプルスクリプトを添付してもらう事は可能でしょうか? DTraceではスクリプト中から引数をarg1のように番号で参照するのが一般的ですが、SystemTapではラッパーライブラリを作ることが推奨されています(いるようです) ライブラリなしの場合の記述方法 ----------------------------------------------- probe process("vm_probes.so").mark("method__entry") { printf("method__entry %x %s, %s, %s, %d\n", $arg1, user_string($arg2), user_string($arg3), user_string($arg4), $arg5); } ライブラリありの場合の記述方法 ----------------------------------------------- probe ruby__method__entry { printf("method__entry %x %s, %s, %s, %d\n", receiver, classname, methodname, sourcefile, sourceline); } なので、そのような引数を名前で参照するためのラッパーをつくりました(添付のvm_probe.stpです) また、私は粗忽者で、いつもSystemTapスクリプトの言語仕様を忘れてしまうので、サンプルも作りました。 使い方ですが、 # stap -Istaplib sample.stp とsystemtapを起動してから、以下のように % ruby -e "require './vm_probes'; p 'hello'" 1行スクリプト流すと、下記結果が出力されます obj create 18067d0 -e 1 method return 1839270 Kernel require -e 1 line -e 1 obj create 18067a8 -e 1 method__entry 1839270 Kernel, p, -e, 1 obj create 1806780 -e 1 method__entry 18067a8 String, inspect, -e, 1 obj create 1806758 -e 1 method return 18067a8 String inspect -e 1 thread_leave 1839270 -e 1 obj create 1806730 -e 1 method return 1839270 Kernel p -e 1 こちらも、vm_probesのどこかサンプルっぽい所にマージしていただけるとありがたいのですが・・・ --00504501416d4bebab047cc95755 Content-Type: application/octet-stream; name="vm_probes.stp" Content-Disposition: attachment; filename="vm_probes.stp" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g49fbpav0 cHJvYmUgcnVieV9fbWV0aG9kX19lbnRyeSA9IHByb2Nlc3MoInZtX3Byb2Jlcy5zbyIpLm1hcmso Im1ldGhvZF9fZW50cnkiKQp7CglyZWNlaXZlciA9ICRhcmcxOwoJY2xhc3NuYW1lID0gdXNlcl9z dHJpbmcoJGFyZzIpOwoJbWV0aG9kbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmczKTsKCXNvdXJjZWZp bGUgPSB1c2VyX3N0cmluZygkYXJnNCk7Cglzb3VyY2VsaW5lID0gJGFyZzU7Cn0KCnByb2JlIHJ1 YnlfX21ldGhvZF9fcmV0dXJuID0gcHJvY2Vzcygidm1fcHJvYmVzLnNvIikubWFyaygibWV0aG9k X19yZXR1cm4iKQp7CglyZWNlaXZlciA9ICRhcmcxOwoJY2xhc3NuYW1lID0gdXNlcl9zdHJpbmco JGFyZzIpOwoJbWV0aG9kbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmczKTsKCXNvdXJjZWZpbGUgPSB1 c2VyX3N0cmluZygkYXJnNCk7Cglzb3VyY2VsaW5lID0gJGFyZzU7Cn0KCnByb2JlIHJ1YnlfX3Jh aXNlID0gcHJvY2Vzcygidm1fcHJvYmVzLnNvIikubWFyaygicmFpc2UiKQp7CglleGNlcHRpb24g PSAkYXJnMTsKCWNsYXNzbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKCXNvdXJjZWZpbGUgPSB1 c2VyX3N0cmluZygkYXJnMyk7Cglzb3VyY2VsaW5lID0gJGFyZzQ7Cn0KCnByb2JlIHJ1YnlfX3Jl c2N1ZSA9IHByb2Nlc3MoInZtX3Byb2Jlcy5zbyIpLm1hcmsoInJlc2N1ZSIpCnsKCWV4Y2VwdGlv biA9ICRhcmcxOwoJY2xhc3NuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOwoJc291cmNlZmlsZSA9 IHVzZXJfc3RyaW5nKCRhcmczKTsKCXNvdXJjZWxpbmUgPSAkYXJnNDsKfQoKcHJvYmUgcnVieV9f bGluZSA9IHByb2Nlc3MoInZtX3Byb2Jlcy5zbyIpLm1hcmsoImxpbmUiKQp7Cglzb3VyY2VmaWxl ID0gdXNlcl9zdHJpbmcoJGFyZzEpOwoJc291cmNlbGluZSA9ICRhcmcyOwp9Cgpwcm9iZSBydWJ5 X19nY19fc3RhcnQgPSBwcm9jZXNzKCJ2bV9wcm9iZXMuc28iKS5tYXJrKCJnY19fc3RhcnQiKSB7 fQpwcm9iZSBydWJ5X19nY19fZW5kID0gcHJvY2Vzcygidm1fcHJvYmVzLnNvIikubWFyaygiZ2Nf X2VuZCIpIHt9Cgpwcm9iZSBydWJ5X190aHJlYWRfX2luaXQgPSBwcm9jZXNzKCJ2bV9wcm9iZXMu c28iKS5tYXJrKCJ0aHJlYWRfX2luaXQiKQp7Cgl0aHJlYWQgPSAkYXJnMTsKCXNvdXJjZWZpbGUg PSB1c2VyX3N0cmluZygkYXJnMik7Cglzb3VyY2VsaW5lID0gJGFyZzM7Cn0KCnByb2JlIHJ1Ynlf X3RocmVhZF9fdGVybSA9IHByb2Nlc3MoInZtX3Byb2Jlcy5zbyIpLm1hcmsoInRocmVhZF9fdGVy bSIpCnsKCXRocmVhZCA9ICRhcmcxOwoJc291cmNlZmlsZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsK CXNvdXJjZWxpbmUgPSAkYXJnMzsKfQoKcHJvYmUgcnVieV9fdGhyZWFkX19sZWF2ZSA9IHByb2Nl c3MoInZtX3Byb2Jlcy5zbyIpLm1hcmsoInRocmVhZF9fbGVhdmUiKQp7Cgl0aHJlYWQgPSAkYXJn MTsKCXNvdXJjZWZpbGUgPSB1c2VyX3N0cmluZygkYXJnMik7Cglzb3VyY2VsaW5lID0gJGFyZzM7 Cn0KCnByb2JlIHJ1YnlfX29iamVjdF9fY3JlYXRlID0gcHJvY2Vzcygidm1fcHJvYmVzLnNvIiku bWFyaygib2JqZWN0X19jcmVhdGUiKQp7CglvYmogPSAkYXJnMTsKCXNvdXJjZWZpbGUgPSB1c2Vy X3N0cmluZygkYXJnMik7Cglzb3VyY2VsaW5lID0gJGFyZzM7Cn0KCnByb2JlIHJ1YnlfX29iamVj dF9fZnJlZSA9IHByb2Nlc3MoInZtX3Byb2Jlcy5zbyIpLm1hcmsoIm9iamVjdF9fZnJlZSIpCnsK CW9iaiA9ICRhcmcxOwp9Cgo= --00504501416d4bebab047cc95755 Content-Type: application/octet-stream; name="sample.stp" Content-Disposition: attachment; filename="sample.stp" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g49fbznl1 cHJvYmUgcnVieV9fbWV0aG9kX19lbnRyeQp7CglwcmludGYoIm1ldGhvZF9fZW50cnkgJXggJXMs ICVzLCAlcywgJWRcbiIsIHJlY2VpdmVyLCBjbGFzc25hbWUsIG1ldGhvZG5hbWUsIHNvdXJjZWZp bGUsIHNvdXJjZWxpbmUpOwp9Cgpwcm9iZSBydWJ5X19tZXRob2RfX3JldHVybgp7CiAgICAgICAg cHJpbnRmKCJtZXRob2QgcmV0dXJuICV4ICVzICVzICVzICVkXG4iLCByZWNlaXZlciwgY2xhc3Nu YW1lLCBtZXRob2RuYW1lLCBzb3VyY2VmaWxlLCBzb3VyY2VsaW5lKTsKfQoKcHJvYmUgcnVieV9f cmFpc2UKewogICAgICAgIHByaW50ZigicmFpc2UgJXggJXMgJXMgJWRcbiIsIGV4Y2VwdGlvbiwg Y2xhc3NuYW1lLCAgc291cmNlZmlsZSwgc291cmNlbGluZSk7Cn0KCnByb2JlIHJ1YnlfX3Jlc2N1 ZQp7CiAgICAgICAgcHJpbnRmKCJyZXNjdWUgJXggJXMgJXMgJWRcbiIsIGV4Y2VwdGlvbiwgY2xh c3NuYW1lLCAgc291cmNlZmlsZSwgc291cmNlbGluZSk7Cn0KCnByb2JlIHJ1YnlfX2xpbmUKewog ICAgICAgIHByaW50ZigibGluZSAlcyAlZFxuIiwgc291cmNlZmlsZSwgc291cmNlbGluZSk7Cn0K CnByb2JlIHJ1YnlfX2djX19zdGFydAp7CiAgICAgICAgcHJpbnRmKCJnY19fc3RhcnRcbiIpOwp9 Cgpwcm9iZSBydWJ5X19nY19fZW5kCnsKICAgICAgICBwcmludGYoImdjX2VuZFxuIik7Cn0KCnBy b2JlIHJ1YnlfX3RocmVhZF9faW5pdAp7CiAgICAgICAgcHJpbnRmKCJ0aHJlYWRfaW5pdCAleCAl cyAlZFxuIiwgdGhyZWFkLCBzb3VyY2VmaWxlLCBzb3VyY2VsaW5lKTsKfQoKcHJvYmUgcnVieV9f dGhyZWFkX190ZXJtCnsKICAgICAgICBwcmludGYoInRocmVhZF90ZXJtICV4ICVzICVkXG4iLCB0 aHJlYWQsIHNvdXJjZWZpbGUsIHNvdXJjZWxpbmUpOwp9Cgpwcm9iZSBydWJ5X190aHJlYWRfX2xl YXZlCnsKICAgICAgICBwcmludGYoInRocmVhZF9sZWF2ZSAleCAlcyAlZFxuIiwgdGhyZWFkLCBz b3VyY2VmaWxlLCBzb3VyY2VsaW5lKTsKfQoKcHJvYmUgcnVieV9fb2JqZWN0X19jcmVhdGUKewog ICAgICAgIHByaW50Zigib2JqIGNyZWF0ZSAleCAlcyAlZFxuIiwgb2JqLCBzb3VyY2VmaWxlLCBz b3VyY2VsaW5lKTsKfQoKcHJvYmUgcnVieV9fb2JqZWN0X19mcmVlCnsKICAgICAgICBwcmludGYo Im9iaiBmcmVlICV4XG4iLCBvYmopOwp9CgoKCg== --00504501416d4bebab047cc95755--