Android应用程序 c/c++ 崩溃排查流程

目录

1.查看日志

二.使用addr2line工具查看具体位置


1.查看日志

如下截取的是应用崩溃的关键日志:

复制代码
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A  Build fingerprint: 'qti/bengal_515/bengal_515:15/AQ3A.241114.001/2539:userdebug/unknown'
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A  Revision: '0'
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A  ABI: 'arm64'
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A  Timestamp: 2025-12-08 14:20:41.230222544+0800
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A  Process uptime: 47s
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A  Cmdline: com.quectel.esim
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A  pid: 28572, tid: 28601, name: Thread-7  >>> com.quectel.esim <<<
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A  uid: 1000
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A  tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A  signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0000000000000008
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A  Cause: null pointer dereference
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A      x0  b40000708e471ff0  x1  0000000000000000  x2  0000000000000008  x3  000000000000002d
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A      x4  2d53756363657373  x5  0000000000000000  x6  0000000000000000  x7  0000000000000000
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A      x8  0000000000000000  x9  5f6c712000737365  x10 ffffffffffffffff  x11 0101010101010101
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A      x12 0000000000000040  x13 ffffff0000000000  x14 ffffffffffffffff  x15 0000000000000028
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A      x16 0000006fecf70108  x17 0000006fecf5211c  x18 0000006fe9304000  x19 0000006fe9a5a730
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A      x20 0000006fe9a5a730  x21 0000006fe9a5a730  x22 0000000000006f9c  x23 0000000000006f9c
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A      x24 0000006fe9a5a730  x25 0000006fe9a5a730  x26 0000006fe9a5aa70  x27 00000073406b3a80
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A      x28 0000006fe9962000  x29 0000006fe9a5a530
2025-12-08 14:20:41.506 28752-28752 DEBUG                   crash_dump64                         A      lr  0000006fecf52fc4  sp  0000006fe9a5a500  pc  0000006fecf52140  pst 0000000080000000
2025-12-08 14:20:41.507 28752-28752 DEBUG                   crash_dump64                         A  7 total frames
2025-12-08 14:20:41.507 28752-28752 DEBUG                   crash_dump64                         A  backtrace:
2025-12-08 14:20:41.507 28752-28752 DEBUG                   crash_dump64                         A        #00 pc 000000000004f140  /data/app/~~Gd3Iea__Lz0MCesEj7CbrQ==/com.quectel.esim-33nIW4JKCT5WvdpUhbwnhQ==/base.apk!liblpa.so (offset 0x3000) (ql_esim_verify_SMDPP_address+36) (BuildId: 6fe1cca9088309958c8cc0b6339cd2cfe2d35e4d)
2025-12-08 14:20:41.507 28752-28752 DEBUG                   crash_dump64                         A        #01 pc 000000000004ffc0  /data/app/~~Gd3Iea__Lz0MCesEj7CbrQ==/com.quectel.esim-33nIW4JKCT5WvdpUhbwnhQ==/base.apk!liblpa.so (offset 0x3000) (ql_esim_lpa_authenticate_server+708) (BuildId: 6fe1cca9088309958c8cc0b6339cd2cfe2d35e4d)
2025-12-08 14:20:41.507 28752-28752 DEBUG                   crash_dump64                         A        #02 pc 00000000000553dc  /data/app/~~Gd3Iea__Lz0MCesEj7CbrQ==/com.quectel.esim-33nIW4JKCT5WvdpUhbwnhQ==/base.apk!liblpa.so (offset 0x3000) (ql_esim_lpa_profile_download_hdlr+456) (BuildId: 6fe1cca9088309958c8cc0b6339cd2cfe2d35e4d)
2025-12-08 14:20:41.507 28752-28752 DEBUG                   crash_dump64                         A        #03 pc 0000000000049f38  /data/app/~~Gd3Iea__Lz0MCesEj7CbrQ==/com.quectel.esim-33nIW4JKCT5WvdpUhbwnhQ==/base.apk!liblpa.so (offset 0x3000) (ql_ipa_main+1032) (BuildId: 6fe1cca9088309958c8cc0b6339cd2cfe2d35e4d)
2025-12-08 14:20:41.507 28752-28752 DEBUG                   crash_dump64                         A        #04 pc 0000000000009b70  /data/app/~~Gd3Iea__Lz0MCesEj7CbrQ==/com.quectel.esim-33nIW4JKCT5WvdpUhbwnhQ==/base.apk!libesim.so (offset 0xcb1000) (OSA_tskThrMain+164) (BuildId: 939b42dcd302d3c3165a0864ae9dcd6e10e44f45)
2025-12-08 14:20:41.507 28752-28752 DEBUG                   crash_dump64                         A        #05 pc 000000000006d8d0  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+196) (BuildId: 64eb5106bc8ae51d575bce9d5c64cec5)
2025-12-08 14:20:41.507 28752-28752 DEBUG                   crash_dump64                         A        #06 pc 000000000005fd34  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) (BuildId: 64eb5106bc8ae51d575bce9d5c64cec5)
2025-12-08 14:20:41.537   853-853   tombstoned              tombstoned                           E  Tombstone written to: tombstone_21

上述关键日志是在null pointer dereference,空指针了,然后具体空指针位置如下:

#00 pc 000000000004f140 /data/app/~~Gd3Iea__Lz0MCesEj7CbrQ==/com.quectel.esim-33nIW4JKCT5WvdpUhbwnhQ==/base.apk!liblpa.so (offset 0x3000) (ql_esim_verify_SMDPP_address+36) (BuildId: 6fe1cca9088309958c8cc0b6339cd2cfe2d35e4d)

二.使用addr2line工具查看具体位置

addr2line工具的位置在ndk工具里面,我这边工具位置在:xxx\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\bin\llvm-addr2line.exe

具体用法示例:

基本用法

aarch64-linux-android-addr2line -e xxx.so 0x4f140

详细版本,显示更多信息

aarch64-linux-android-addr2line -e xxx.so -f -C -p 0x4f140

如下是具体的用法

可以看出来是定位到773行空指针了,这里我们就去看为什么773行空指针了,我这里是因为传递进入的指针被回收了导致的

上述的指令如果想在任意位置使用就添加到环境变量里面即可,将xxx\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\bin\路径添加到环境变量中

相关推荐
沫璃染墨37 分钟前
从零入门计算机网络系列(十一):HTTP协议进阶——从重定向原理到GET/POST与Fiddler抓包
linux·服务器·开发语言·网络·c++·tcp/ip·html
刚入门的大一新生1 小时前
Linux-线程互斥
java·开发语言
香芋芋圆1 小时前
iD-editor 详解|OSM官方在线编辑器,基于D3.js的轻量地图编辑器
开发语言·javascript·编辑器
揽星河..2 小时前
【C语言】分支和循环
c语言·c++·算法
小熊恋旧2 小时前
Python 面向对象编程:方法、属性、继承与多态详解
开发语言·python
云边云科技_云网融合2 小时前
面向汽车零部件制造业场景的解决方案 | 70 秒:一台车下线的时间里,藏着五张网
开发语言·汽车·php
Evand J2 小时前
【PMSM滤波例程2】PMSM未知负载转矩观测EKF。MATLAB例程(负载增广EKF与实际仿真结果)。附下载链接
开发语言·matlab·电机
will_net2 小时前
apollo 站点部署&C#接入
开发语言·c#·apollo
晗夜未央3 小时前
任务队列反复失败,先分清重试、阻塞和结果待核对
开发语言·javascript
熊猫钓鱼>_>3 小时前
四种书签,一条时间线:一个读书 App 的记忆颗粒与它的边界案例【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙pc