目次
製品概要と価値提案
Deleaker は、Windows 環境で動作するリーク検出ツールです。C/C++、.NET、Delphi/C++Builder を対象とし、メモリ(ヒープ/仮想/OLE)だけでなく、GDI、USER、ハンドルのリークまで可視化・追跡します。Visual Studio(2005–2022)や RAD Studio、Qt Creator と直接統合して IDE 内から利用できるほか、スタンドアロン版で IDE を使わない環境でも解析可能です(VC++ 6.0 は拡張ではなくスタンドアロンで対応)。
他の一般的なメモリツールがヒープ中心なのに対し、Deleaker は Windows 固有の GDI/USER/ハンドルの枯渇による UI 低下やクラッシュのリスクを直撃。スナップショット比較、Hit Count による優先度付け、モジュールやリーク種別のフィルタ、コールスタックからのソース遷移といった機能により、症状から修正までの時間(MTTR)を短縮します。
製品紹介(機能詳細)
カバーするリーク種別
- メモリ:ヒープ、仮想メモリ、OLE メモリ
- Windows リソース:GDI オブジェクト(ペン、ブラシ、ビットマップ、デバイスコンテキスト 等)、USER オブジェクト、各種ハンドル
- .NET/C++/CLI:マネージ/アンマネージ境界をまたぐリークの追跡(※.NET でネイティブ DLL を呼ぶ場合などは アンマネージド デバッグの有効化が必要)
IDE/Standalone の UI 概要
- Visual Studio 拡張:デバッグ開始と同時に Deleaker ウィンドウが現れ、リアルタイムに割当てを追跡。必要に応じて有効/無効を切替。
- RAD Studio 拡張:Delphi/C++Builder の IDE で割当て・オブジェクト・GDI/USER/ハンドルを表示。
- Qt Creator プラグイン:Qt/C++ のリークを IDE 内で追跡し、該当ソースへ遷移。
- スタンドアロン:Visual Studio 非搭載マシンや、顧客環境でのみ再現する不具合の調査に最適。任意のプロセスをアタッチして現状の割当てを一覧化。
スナップショットと差分比較
- ワンクリックでスナップショット取得。複数のスナップショットを比較して増減を特定。
- Hit Count(同一スタックの発生回数)で並べ替え、ホットスポットを特定。
- 既知のリークや対象外のモジュールは非表示にしてノイズを削減。
コールスタックとソース遷移
- 各割当てのフルスタックトレースを表示。
- Show Source 操作で、Visual Studio では該当ファイル/行へジャンプ。スタンドアロンでは既定のエディタで開く。
フィルタリング(種別/モジュール/既知のリーク)
- リーク種別フィルタ:メモリ、GDI、USER、ハンドルなど。
- モジュールフィルタ:DLL/EXE 単位で絞り込み。
- 既知のリークを隠す:認識済みのリークを一時的に一覧から除外。
シンボル解決(Microsoft Symbol Servers/PDB)
- Microsoft Symbol Servers の利用可否を切替。
- プロジェクトや社内ビルドの PDB パスを指定可能。
- モジュールごとのシンボル状態を一覧で確認(未読込/エクスポートのみ/完全読込 など)。
パフォーマンスとオーバーヘッド
- 標準の Visual Studio デバッガ連携により、通常用途でも常時オンにしやすい軽さを志向。
- Fast mode(ヒープ追跡の高速化オプション)を搭載。
対応環境
対応 OS/アーキテクチャ
- Windows(XP 以降)
- x86/x64 アプリケーションをサポート
対応 IDE
- Visual Studio 2005–2022(拡張に対応。Visual Studio Express は拡張非対応)
- RAD Studio(Delphi/C++Builder)
- Qt Creator
- VC++ 6.0:拡張は非対応。スタンドアロン版でサポート
対応ツールチェーン
- Microsoft Visual C++(MSVC)
- MinGW 系コンパイラ
導入メリット(ビジネス価値)
- MTTR 短縮:スタック・ソース遷移・差分比較で原因箇所に素早く到達。
- 回帰防止:CI で XML レポートをゲートに設定し、漏れの再混入を阻止。
- 品質一貫性:GDI/USER/ハンドルといったWindows 固有の上限に対処し、長時間稼働や GUI 操作が多いアプリの安定性を担保。
- チーム運用に馴染む:IDE に常設できる軽さと、スナップショット DB(*.dsnapshot)や XML 出力による共有性。
クイックスタート(使い方)
Visual Studio 2005–2022
- 拡張を有効化し、デバッグ実行を開始。
- Deleaker ウィンドウで割当て一覧を確認し、必要に応じてリーク種別/モジュールでフィルタ。
- 任意のタイミングでスナップショットを取得し、比較して増減を分析。
- Hit Count の高い項目や、増加傾向のある項目から着手。
- エントリを選択し Show Source でソースへ遷移。
- .NET プロジェクトでネイティブ DLL を呼ぶ場合は、プロジェクト設定で アンマネージドコード デバッグを有効化。
RAD Studio(Delphi/C++Builder)
- IDE 内で割当て/オブジェクト/GDI・USER・ハンドルを可視化。
- VCL/FMX のライフサイクルに沿ってスナップショットを採取し、フォーム切替や描画頻度の高い処理でのリソース漏れを検出。
Qt Creator
- プラグインを有効化し、デバッグ中に割当てとスタックを追跡。
- Qt ウィジェットや QImage/QPixmap 等の扱いでGDI リークが発生しやすい箇所を重点確認。
スタンドアロンでの解析(リリースビルド/クライアント環境)
- Visual Studio 非搭載のマシンでも動作。対象プロセスを起動またはアタッチし、現在の割当てを一覧化。
- VC++ 6.0 環境はスタンドアロンを利用。
CI/CD 連携(コマンドライン)
Deleaker には DeleakerConsole.exe(コマンドライン)が付属し、スナップショットの取得/エクスポート/周期保存/クラッシュダンプ採取を自動化できます。XML レポートや .dsnapshot を成果物として CI に残し、不合格閾値を設定してリークゲートを構築可能です。
DeleakerConsole の主なオプション
- 「--export-xml-report-on-exit
」:終了時に XML レポートを作成 - 「--snapshot-database
」:スナップショット DB(*.dsnapshot) 保存先 - 「--save-snapshot-on-exit」:終了時にスナップショット保存
- 「--save-snapshot-period
」:指定秒数ごとに定期スナップショットを保存 - 「--crash-dump-directory
」:クラッシュダンプ保存先 - 「--run
[args...]」:対象アプリを起動(以降はそのまま引数に解釈)
CI への組み込み例(概念設計)
- PR 検証:デバッグ構成でアプリ起動 → シナリオ実行 → XML を収集 → リーク数/Hit Count しきい値で合否判定。
- 長時間テスト:「--save-snapshot-period」で時間軸データを取得し、傾向(増加)を監視。
- 障害調査:「--crash-dump-directory」と組み合わせ、再現テストでダンプとリーク状況を同時取得。
ライセンスと運用
ライセンス種別
- Single Developer License(1 名専用)
- Site Developer License(同一建物の開発者に付与)
- Floating Developer License(同時利用数で管理)
フローティングライセンスサーバー概要
- 社内ネットワーク上の Windows サーバーで稼働(サービスとして動作)
- .NET 4.0 を要件とする構成
- クライアント側は FLS クライアントを経由して同時利用数を消費
よくある質問(FAQ)
Q1. Visual Studio Express でも使えますか?
A. Express は拡張非対応のため、スタンドアロン版をご利用ください。
Q2. VC++ 6.0 に統合できますか?
A. Add-in(拡張)は非対応です。スタンドアロン版で対応します。
Q3. .NET のリークは検出できますか?
A. 可能です。マネージ/アンマネージの両領域を監視できます。ネイティブ DLL を呼ぶ場合はアンマネージド デバッグを有効化してください。
Q4. MinGW でも機能しますか?
A. はい。MSVC に加えて MinGW 系をサポートしています。
Q5. 32bit/64bit のどちらに対応していますか?
A. x86/x64 の両アプリケーションに対応しています。
Q6. CI では何が出力できますか?
A. XML レポートや .dsnapshot を生成できます。定期スナップショットやクラッシュダンプ収集も可能です。
Q7. パフォーマンスへの影響は?
A. 通常のデバッグ運用で常時オンにできる軽さを目指して設計されています。必要時は一時的に無効化可能です。
ユースケースと活用シナリオ
- デスクトップ GUI(Win32/MFC/WinForms/WPF):ペン/ブラシ/ビットマップ/デバイスコンテキストのGDI リークを捕捉し、フリーズやクラッシュの原因を除去。
- Windows 上の Qt:ウィジェットのライフサイクルや描画資源の扱いを IDE 内で検証。
- Delphi/C++Builder(VCL/FMX):フォーム遷移や非同期処理でのリソース解放漏れを IDE で追跡。
- .NET+ネイティブ連携:P/Invoke や C++/CLI 経由の呼び出しで生じる境界横断リークを特定。
- 長時間サービス/常駐アプリ:「--save-snapshot-period」による傾向監視で、稼働時間に比例して悪化するリークを早期検知。
競合比較の観点
- ヒープ中心の汎用ツールとの比較:Deleaker は Windows 固有リソース(GDI/USER/各種ハンドル)まで対象を拡張し、IDE 連携と使いやすい UI、XML 出力により日常のデバッグ運用に適しています。
- 計測・動的解析を重視する手法との比較:広範な正当性検査に適したアプローチと比べ、Deleaker はオーバーヘッドを抑えた IDE 中心のワークフローで、反復的なリークハントを高速化します。
- 包括的な解析スイートとの比較:多機能スイートに対して、Deleaker は Windows リソースリークに焦点を絞り、導入・運用・学習コストを低く抑えます。
メーカーの製品サイト
https://www.deleaker.com/
【言語】英語


