ネイティブ クラッシュをデバッグする
ネイティブ クラッシュのダンプや tombstone の基礎知識については、ネイティブ Android プラットフォーム コードをデバッグするをご覧ください。
一般的なクラッシュ タイプの一覧とその調査方法については、ネイティブ クラッシュを診断するをご覧ください。
ndk-stack ツールは、クラッシュのシンボル化に役立ちます。一般的なアプリのデバッグのドキュメントの説明にあるように、Android Studio でクラッシュをデバッグできます。コマンドラインを使用する場合は、ndk-gdb を使用すると、シェルから gdb
または lldb
をアタッチできます。
ネイティブ メモリの問題をデバッグする
AddressSanitizer(HWASan / ASan)
HWAddressSanitizer(HWASan)と Address Sanitizer(ASan)は Valgrind に似たツールですが、Android での高速化とサポートが大幅に向上しています。
これらのツールは、Android でメモリエラーをデバッグするのに最適です。
malloc デバッグ
ネイティブ メモリ問題をデバッグするための C ライブラリの組み込みオプションの詳細については、malloc デバッグと libc コールバックを使用したネイティブ メモリ トラッキングをご覧ください。
malloc フック
独自のツールをビルドする場合、Android の libc は、プログラムの実行中に発生するすべての割り当て / フリーコールのインターセプトもサポートしています。使用方法については、malloc_hooks のドキュメントをご覧ください。
malloc 統計情報
Android は、<malloc.h>
の拡張である mallinfo(3) と malloc_info(3) をサポートしています。
malloc_info
機能は、Android 6.0(Marshmallow)以降で使用できます。その XML スキーマは、Bionic の malloc.h ヘッダーに記載されています。
プロファイリング
ネイティブ コードの CPU プロファイリングには、Simpleperf を使用できます。