调试项目

调试原生代码崩溃问题

如果您在试图了解原生代码崩溃转储或 tombstone,不妨阅读调试 Android 平台原生代码一文。

如需详细了解常见崩溃类型的更完整目录以及如何调查它们,请参阅诊断原生代码崩溃问题

ndk-stack 工具可帮助对崩溃问题进行符号化处理,ndk-gdb 可用于通过命令行添加 gdb,不过最好还是使用 Android Studio 的内置 lldb 支持,详见其常规文档调试应用

调试本地内存问题

地址清理程序 (HWASan/ASan)

HWASanASan 类似于 Valgrind,但在 Android 上明显速度更快且支持效果更好。

以下是在 Android 上调试内存错误的最佳选项。

Malloc 调试

有关 C 库内置的本地内存问题调试选项的完整说明,请参阅 Malloc 调试使用 libc 回调跟踪本地内存

Malloc 钩子

如果您想构建自己的工具,Android 的 libc 也支持拦截在程序执行期间发生的所有分配/释放调用。有关使用说明,请参阅 malloc_hooks 文档

Malloc 统计信息

Android 支持对 <malloc.h> 进行 mallinfo(3)malloc_info(3) 扩展。

Android 6.0 (Marshmallow) 及更高版本提供 malloc_info 功能,其 XML 架构记录在 Bionic 的 malloc.h 头文件中。

分析

要对原生代码进行 CPU 分析,请使用 Simpleperf