kidoOooOoooOOom

IT系で開発やってます

UnityをAndroid実機につなげてデバッグした時のアレコレ

Unity アプリがAndroid実機でクラッシュする問題を調査した時のアレコレをメモる。

  • monitorでログを見る

android 実機と MacをUSBケーブルで繋げる。
android sdk をインストールし、tools/monitor コマンドを実行すると android 実機上で吐かれたログを観れるようになる。

  • android のメモリ使用状況をチェック

android sdk の adb コマンドを使う。

adb shell dumpsys meminfo

を実行すると、下記のようなメモリ使用状況確認できる。

Total RAM: 1850148 kB (status normal)
 Free RAM: 775573 kB (170057 cached pss + 465736 cached kernel + 139780 free)
 Used RAM: 1181385 kB (1049989 used pss + 131396 kernel)
  • crash report から crashしたプログラムの箇所を特定する

crash report には、どのファイルのどの番地でクラッシュしたかが出力されている。
.so ファイルの場合は、objdump, greadelf コマンド等を用いて解析する。
Macでは、binutils を installして gobjdump, greadelf コマンドを使う。

(ただ、自分の場合は .so ファイルを gobjdumpしてもファイルが曖昧ですというエラーが出たため解析諦めた)

Unity 公式ドキュメントに書かれているこの方法をとればok.
http://docs.unity3d.com/ja/current/Manual/AttachingMonoDevelopDebuggerToAnAndroidDevice.html

(ただし、リモートデバッガをONにしたために解析したい場所とはまた別のところでクラッシュして困った・・・)


参考にしたページ:
hiro99ma blog: logcatに出てくるSIGSEGVからソースファイルを割り出す

www.slideshare.net

KMC Staff Blog:Androidのデバッグダンプからソース上の問題発生箇所を調べる方法
docs.unity3d.com

sssslide.com
docs.unity3d.com
araking56.blog134.fc2.com

qiita.com