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

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

ネイティブ クラッシュのダンプや tombstone の基礎知識については、ネイティブ Android プラットフォーム コードをデバッグするをご覧ください。

一般的なクラッシュ タイプの一覧とその調査方法については、ネイティブ クラッシュを診断するをご覧ください。

ndk-stack ツールを使用すると、クラッシュをわかりやすく表示できます。ndk-gdb を使用すると、コマンドラインから gdb をアタッチできます。ただし、Android Studio に組み込まれている lldb サポートを使用するほうがデバッグが容易になる可能性があります。詳細については、アプリをデバッグするドキュメントの一般的な説明をご覧ください。

ネイティブ メモリ問題をデバッグする

AddressSanitizer(HWASan / ASan)

HWASanASan は 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 を使用できます。