DDMSで効率的にデバッグする
|DDMS(Dalvik Debug Monitor Server)はAndroidのデバッギングツールです。
デバッグ作業の手助けになる情報が満載です。
今回はEclipcse上のDDMSパースペクティブの使い方について紹介します。
そのほかのデバッグ機能、adbについては「adbを使いこなす」
デバッグログシステムについては「デバッグログを使いこなす」をご確認ください。
主な機能は以下の通りです。
- デバイスごと、デバッグ機能を提供
- エミュレータへの着信、電波状態、位置情報制御
- スレッドの状態確認
- Heap(メモリ)の使用量、使用統計情報
- メモリ・アロケーション(メモリ確保)のトラッキング
- ファイルエクスプローラ
Devices(デバイス)タブ
USB接続されたAndroid端末、もしくはエミュレータが表示されるタブです。
各端末ごとのプロセス一覧が表示され、デバッグ対象のprocessには緑のBug(虫)マークがついています。
Emulator Control(エミュレータ制御)タブ
エミュレータ制御タブは画像上から順番に次の機能を持っています。
- 電話状態
- 音声およびデータ通信について、電波状態と通信情報を変更することができます。
- 電波状態はunregistered , home , roaming , seratching , denyed が、
- 速度は Full, GSM, HSCSD, GPRS, EDGE, UMTS, HSDPA の種類があります。
- 電話着信
- 任意の電話番号から着信をすることができます。また、Voice|SMSがオプションとして
用意されています。
- 任意の電話番号から着信をすることができます。また、Voice|SMSがオプションとして
- 位置情報
- 位置情報はその名の通り、GPS情報です。
スレッドタブ
上記デバイスタブからデバッグ対象アプリケーションを選択、「Update Threads」です。
引き続き、スレッドタブのリフレッシュボタンを押せば、スレッド構成が表示されます。
IDやTid、タスクの状況(wait OR runnning)、名前などが一覧表示されます。
Heapタブ
アプリケーションのHeap(メモリ空間)を表示します。
メモリの空きサイズを確認したり、メモリリークを調べたりできます。
デバイスタブからUpdate Heapボタンを押下します。
Heapタブでは、Cause GCボタンを押すとHeap領域の使用状態が表示され、
オブジェクトの使用状況が分かります。Cause GCボタンを押すことで、
一度、GC(ガベージコレクションによる未使用メモリの回収)を行っています。
オブジェクトの使用状況、非効率的な作成箇所がないか、などメモリ使用量の観点から、
性能の向上や不具合対策に使える機能です。
Allocation Tracker
メモリ確保時の挙動を追跡します。動的な履歴としてメソッド呼び出し履歴などログを確認できます。
Start Trackingを押してからStop Trackingのボタンを押すまでの間、メモリの確保(アロケート)タイミングについて追跡します。
Get Allocations を押すと、確保(アロケート)されたオブジェクト一覧がタブの上部に表示されます。
確認したいオブジェクトを選択すると、タブの下部にメモリ・アロケート(確保)に至るメソッド、行番号が表示されます。
頻繁にGCが発生して、パフォーマンスに影響する場合の調査や、
不用意に生成しているオブジェクトの調査、生成タイミングの最適化を行うにはとても便利な機能です。
ファイル・エクスプローラー
ファイル・エクスプローラータブはその名の通り、Andriod端末でのファイル操作を行います。
もちろん、通常のadb同様に、端末へデータをpushしたり、コンピュータにデータをpull したり、
ファイル操作が可能を行えます(要rootまたは、権限があるディレクトリのみ操作が可能です)