调试 Android 平台原生代码  

您所在的位置:网站首页 安卓调试安卓 调试 Android 平台原生代码  

调试 Android 平台原生代码  

2023-10-30 23:55| 来源: 网络整理| 查看: 265

本部分总结了开发平台级功能时,可用于调试、跟踪和性能剖析 Android 平台原生代码的实用工具和相关命令。

注意:本部分和本网站其他部分的页面建议结合 setprop 参数来使用 adb,以调试 Android 的特定方面。在 Android 7.x 及更低版本中,属性名称的长度上限为 32 个字符。也就是说,如需创建一个包含应用名称的 wrap 属性,您需要截断该名称,使其符合长度限制。在 Android 8.0 及更高版本中,这一上限要大得多,应该不需要执行截断操作。

本页将介绍可以在 logcat 输出中找到的崩溃转储的基本信息;其他页面更详细地介绍了如何诊断原生代码崩溃问题,如何通过 dumpsys 了解系统服务状况,如何查看原生内存、网络和 RAM 的使用情况,如何使用 AddressSanitizer 检测原生代码中的内存 bug,如何评估性能问题(包括 systrace),以及如何使用调试程序。

崩溃转储和 Tombstone

当动态链接的可执行文件启动时,系统会注册多个信号处理程序,如果出现崩溃,这些处理程序会将一份基本崩溃转储信息写入 logcat,并将一个更详细的 Tombstone 文件写入 /data/tombstones/。Tombstone 是一个包含与崩溃进程相关的额外数据的文件。具体而言,该文件包含崩溃进程中所有线程(而不只是捕捉到信号的线程)的堆栈轨迹、完整的内存映射,以及所有打开的文件描述符的列表。

在 Android 8.0 之前的版本中,崩溃由 debuggerd 和 debuggerd64 守护程序处理。Android 8.0 及更高版本会根据需要生成 crash_dump32 和 crash_dump64。

崩溃转储程序只有在未挂接其他任何工具时才可能挂接。这意味着,使用 strace 或 lldb 等工具会阻碍崩溃转储。

输出示例(已去除时间戳和无关信息):

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** Build fingerprint: 'Android/aosp_angler/angler:7.1.1/NYC/enh12211018:eng/test-keys' Revision: '0' ABI: 'arm' pid: 17946, tid: 17949, name: crasher >>> crasher > crasher > crasher


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3