You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Android崩溃日志的偏移量定位ASM对应的源码行号

通过符号偏移定位汇编源码行的方法

前置准备

你需要先拿到和崩溃日志中BuildId 1980ba02db10292648c1fc24639ec9c1完全匹配的libc.so带符号版本,或者直接拉取对应Android 10分支的bionic源码本地编译,编译时开启调试信息保留选项,避免版本差异导致偏移不匹配。

具体操作步骤

  • 确认偏移属性:Crashlytics输出的__memcpy_a53+40中,后缀的数值为十进制字节偏移,代表崩溃点位于__memcpy_a53函数入口之后的第40个字节位置,转换为十六进制为0x28。
  • 编译汇编文件生成映射关系:使用对应Android 10版本的ARM32编译工具链(如NDK内置的arm-linux-androideabi-as),加-g参数保留调试信息,编译你获取到的bionic/libc/arch-arm/cortex-a53/bionic/memcpy.S文件,生成带行号映射的.o目标文件。
  • 查看偏移对应行号:执行objdump -dS 编译生成的目标文件.o命令,输出结果会同时展示汇编指令、机器码、相对函数入口的偏移、对应源码行号四类信息,直接查找偏移为0x28的条目即可得到崩溃对应的源码行。

快速校验方法

Cortex-A53架构的memcpy默认使用ARM32模式编译,每条指令固定占4字节,你可以从__memcpy_a53函数的入口指令开始,逐行数10条指令(40/4=10),即可快速定位到崩溃的大致指令位置,该方法仅用于快速校验,最终结果以objdump输出为准。


内容的提问来源于stack exchange,提问作者Programmer1234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:24:01