ほとんどの場合、開発者はアプリケーションコードのデバッグ、エラーの追跡、時間の経過に伴う変数の値の変化の確認に費やします。Delphiでは、Delphiのデバッグ情報にアクセスし、問題を簡単に見つけることができるプロ仕様のデバッグツールがいくつか存在しますが、最も優れたDelphi デバッグフレームワークの1つが「DebugEngine」というフレークワークです。
DebugEngineとは?
DebugEngineは、スタックトレース、CPUレジスタのスナップショット、デバッグ情報など、デバッグに関するユーティリティを集めたオープンソースのスイートです。
お使いの環境に合わせたDebugEngineの設定方法については、こちらで詳しく説明しています。
1 2 3 4 5 6 7 8 9 10 11 12 |
var P: Pointer; begin { Private variable System.MemoryManager } P := GetSymbolAddress(0, 'System', 'MemoryManager'); { Private method System.SetExceptionHandler } P := GetSymbolAddress(0, '', 'SetExceptionHandler'); { Protected method TCustomForm.CloseModal } P := GetSymbolAddress(0, '', 'TCustomForm.CloseModal'); { Windows api } P := GetSymbolAddress(GetModuleHandle(user32), '', 'MessageBoxA'); end; |
DebugEngineの機能
DebugEngineには、以下のような特徴や様々な機能、そしてユーティリティが用意されております。
- x86およびx64アーキテクチャをサポート
- Delphiデバッグ情報へのアクセス
- シンボル名からシンボルアドレスの取得
- Delphiのmap解析とバイナリ形式へのmapコンバータ
- PEファイルからDelphiのデバッグ情報を削除/復元
- スマートなスタックトレース
- Try blocks トレース
- デバッグ情報にリンクされていても、Delphiアプリのリソースを更新
- PEファイルにカスタムデバッグ情報を挿入
- CPUレジスタのスナップショット
- ベクトルレジスタへのアクセス
- デバッグ情報を使用したDisasmとコメント関数
- 例外ハンドラの列挙
- Delphi例外のスタックトレースのフック
- Delphiの文字列検出
- PEのユーティリティ
- Disasmのユーティリティ
DebugEngineに関する以下のドキュメントを参考ください。
- DebugEngine Getting started(抄訳)
- How StackTrace works?(英語)
- DebugEngine stack trace:(英語)
- DebugEngineのデモプログラム
DebugEngineは、Mozilla Public License 2.0のライセンス規定されているオープンソースプロジェクトで、 こちらから入手できます。なお、エンバカデロではこの製品に関するテクニカルサポートサービスは提供しておりません。
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition