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がオプションとして
      用意されています。
  • 位置情報
    • 位置情報はその名の通り、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または、権限があるディレクトリのみ操作が可能です)

3 Comments