Category:
Xojo
あけましておめでとうございます。Xojo のデスクトップアプリ開発を支援するランタイムツール Xojo Instruments を GitHub で公開しました。ライセンスは MIT です。Xcode に付属する Instruments のようにメモリリークを検出したり循環参照を検出することができるツールです。XojoInstruments フォルダを自分のプロジェクトにコピーして、
このツールのポイントは二つです。
ということで、どなたかのお役に立てば幸いです。
XojoInstruments.Start()を書き足すだけで動作します。スクリーンショットを見ていただければ大凡イメージがつくと思いますが、ランタイム状態の Snapshot を任意のタイミングでキャプチャすることができます。ランタイム状態には全オブジェクトの一覧が含まれるため、Snapshot 間の比較を行うことでメモリリークの検出が簡単に行えます。また、Build Reference Graph を有効にしてキャプチャを行うと参照グラフが同時に採取され、参照関係の可視化やバックリファレンス(対象オブジェクトを参照しているオブジェクト)の追跡も行えるようになります。
このツールのポイントは二つです。
- リークが発生したオブジェクトのクラス名や数が分かるだけでなく(これは MemChecker など既存のツールでもできていた)、実際にリークが発生したオブジェクトがどこから参照されているのかを追跡することができる。また、そのオブジェクトの詳細情報を IDE 上で確認することができる。
- ランタイムに組み込んで使用するツールでありながら Xojo Instruments 自体の生成するオブジェクトが Snapshot から完全に除外されている。ディクショナリや配列など Snapshot の採取に必要なデータ構造は XojoInstruments.Framework 配下に XIObject interface を実装するクラスとして独自に定義し、XIObject interface を実装しているクラスを Snapshot の採取対象外にすることで実現されている。
ということで、どなたかのお役に立てば幸いです。
Comments