プロジェクトをデバッグする

ネイティブ クラッシュをデバッグする

ネイティブ クラッシュのダンプや 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 を使用できます。