分12これまでの連載における説明では,基本的にpidプロバイダが提供するプローブ(entryおよびreturn)を使用して,関数の呼び出し/復帰に関して情報を採取してきました。実際のプログラム開発においては,情報を採取したい場所が,必ずしも関数呼び出しとは直接関係無い場合も多々あります。そこで,今回と次回の2回に渡って,関数呼び出しの境界以外から情報を採取するための,独自プロバイダの定義とその利用について説明します。今回は,単純な値を採取する独自プロバイダについて説明します。以下の手順で必要となるソースファイルを準備します。何をおいても,まずは独自プロバイダを定義する必要があります。lineno);};プロバイダcheckpointが提供するプローブpassは,以下のような用途を想定しています。プログラムの要所要所に埋め込まれたプローブ位置において,ファイル名と行番号情報を採取することで,実行時にどのような経路を通過したのかを知るつまり,関数フローよりもさらに細かい粒度で,実行フローを採取することができるわけです。後ろ)にセミコロンが必要です。普段のDスクリプトでは不要な記述であることから,このセミコロンは忘れがちになりますので注意してください。独自プロバイダを定義したならば,図1に示す要領でdtraceコマンドを実行してください。オプションを指定することで,リスト2のような内容を持ったヘッダファイルcheckpoint.hが生成されます。:"-h"オプション指定によってdtraceコマンドが生成するヘッダファイルでは,各プローブごとに「プロバイダ名」+「プローブ名」の形式でマクロが定義されます(名称は共に大文字に変換されます⁠)⁠。通常は,ここで生成されたヘッダファイル中のマクロを使用して,対象ソースファイルにプローブの埋め込みを行います。__dtrace_checkpoint___pass())を呼び出すだけの単純なものですが,名称の長さの点などからも,直接関数を呼ぶのではなくマクロを使う方が良いでしょう。先述したように,通常はdtraceコマンドによって生成されたヘッダファイルと,そこで定義されているマクロを直接使いますが,今回のpassのようなプローブの場合,実装時におけるファイル名や行番号指定の手間を軽減するために,リスト3のようなマクロ定義を含むヘッダファイルcheckpoint_impl.hを定義しましょう。__LINE__)CHECKPOINT_PASS()マクロを直接使用するのではなく,新たに定義したDTRACE_CHECKPOINT_PASS()マクロを使うことで,対象プログラムに対するプローブの埋め込みの手間が(幾分)軽減されます。今回独自に定義したpassプローブの埋め込み対象として,リスト4に示す処理をmain()に持つプログラムを想定します。DTRACE_CHECKPOINT_PASS();この実装では与えられた引数に応じて条件分岐を行いますが,あくまで関数内に閉じた処理であり,他の関数を呼び出すわけでもありませんから,これまで使用してきたpidプロバイダによる関数フロー採取では,どのような経路が実行されたのかを知ることができません。そこで,今回新たに定義したpassプローブを使用することで,どのファイルのどの行が実行されたのかを採取するわけです。Linux/Windows対応』を上梓。凝り性なのが災いして,年がら年中アップアップな一介の実装屋。最近は仕事の縁が元で,OpenSolarisに入れ込む毎日。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。