使用 windows ndk-stack 分析NDK crash

通过豆包搜索:windows ndk-stack 使用

ndk-stack 路径:使用 Android\Sdk\ndk-bundle\ndk-stack.cmd

adb logcat > crash_log.txt

符号表 /so 文件路径:(obj 目录下的 so 包含完整符号表)app\build\intermediates\cmake\debug\obj\arm64-v8a\libplayer.so

一、首先要验证 obj 目录的 so 是否包含符号表

复制代码
# 1. 切换到NDK的工具目录(以arm64-v8a为例)
cd D:\Android\Sdk\ndk\25.2.9519653\toolchains\aarch64-linux-android-4.9\prebuilt\windows-x86_64\bin

# 2. 执行readelf查看符号表
aarch64-linux-android-readelf.exe -S D:\MyProject\app\src\main\obj\local\arm64-v8a\libffmpeg.so

示例:
C:\Users\jack\AppData\Local\Android\Sdk\ndk-bundle\toolchains\llvm\prebuilt\windows-x86_64\bin>llvm-readelf.exe -S G:\tmp\MyApp11\app\build\intermediates\cmake\debug\obj\arm64-v8a\libplayer.so
There are 35 section headers, starting at offset 0x30544a0:

Section Headers:
  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            0000000000000000 000000 000000 00      0   0  0
  [ 1] .note.android.ident NOTE          0000000000000238 000238 000098 00   A  0   0  4
  [ 2] .note.gnu.build-id NOTE           00000000000002d0 0002d0 000024 00   A  0   0  4
  [ 3] .dynsym           DYNSYM          00000000000002f8 0002f8 0233d0 18   A  7   1  8
  [ 4] .gnu.version      VERSYM          00000000000236c8 0236c8 002efc 02   A  3   0  2
  [ 5] .gnu.version_r    VERNEED         00000000000265c4 0265c4 000070 00   A  7   3  4
  [ 6] .gnu.hash         GNU_HASH        0000000000026638 026638 00b128 00   A  3   0  8
  [ 7] .dynstr           STRTAB          0000000000031760 031760 022350 00   A  0   0  1
  [ 8] .rela.dyn         RELA            0000000000053ab0 053ab0 084630 18   A  3   0  8
  [ 9] .rela.plt         RELA            00000000000d80e0 0d80e0 001398 18  AI  3  21  8
  [10] .gcc_except_table PROGBITS        00000000000d9478 0d9478 000d08 00   A  0   0  4
  [11] .rodata           PROGBITS        00000000000da180 0da180 262f40 00 AMS  0   0 32
  [12] .eh_frame_hdr     PROGBITS        000000000033d0c0 33d0c0 03370c 00   A  0   0  4
  [13] .eh_frame         PROGBITS        00000000003707d0 3707d0 0a9e40 00   A  0   0  8
  [14] .text             PROGBITS        000000000041a620 41a620 567690 00  AX  0   0 32
  [15] .plt              PROGBITS        0000000000981cb0 981cb0 000d30 00  AX  0   0 16
  [16] .data.rel.ro      PROGBITS        00000000009839e0 9829e0 081df0 00  WA  0   0  8
  [17] .fini_array       FINI_ARRAY      0000000000a057d0 a047d0 000010 00  WA  0   0  8
  [18] .init_array       INIT_ARRAY      0000000000a057e0 a047e0 000010 00  WA  0   0  8
  [19] .dynamic          DYNAMIC         0000000000a057f0 a047f0 0001f0 10  WA  7   0  8
  [20] .got              PROGBITS        0000000000a059e0 a049e0 003480 00  WA  0   0  8
  [21] .got.plt          PROGBITS        0000000000a08e60 a07e60 0006a0 00  WA  0   0  8
  [22] .data             PROGBITS        0000000000a0a500 a08500 0010d0 00  WA  0   0  8
  [23] .bss              NOBITS          0000000000a0b5e0 a095d0 1440e40 00  WA  0   0 32
  [24] .comment          PROGBITS        0000000000000000 a095d0 000222 01  MS  0   0  1
  [25] .debug_abbrev     PROGBITS        0000000000000000 a097f2 0ea8cc 00      0   0  1
  [26] .debug_info       PROGBITS        0000000000000000 af40be 13fc36d 00      0   0  1
  [27] .debug_ranges     PROGBITS        0000000000000000 1ef042b 0f9e40 00      0   0  1
  [28] .debug_str        PROGBITS        0000000000000000 1fea26b 0f1d53 01  MS  0   0  1
  [29] .debug_line       PROGBITS        0000000000000000 20dbfbe 3c6589 00      0   0  1
  [30] .debug_loc        PROGBITS        0000000000000000 24a2547 99ab7a 00      0   0  1
  [31] .debug_aranges    PROGBITS        0000000000000000 2e3d0c1 000690 00      0   0  1
  [32] .symtab           SYMTAB          0000000000000000 2e3d758 13e6a8 18     34 48330  8
  [33] .shstrtab         STRTAB          0000000000000000 2f7be00 000172 00      0   0  1
  [34] .strtab           STRTAB          0000000000000000 2f7bf72 0d852d 00      0   0  1
Key to Flags:
  W (write), A (alloc), X (execute), M (merge), S (strings), I (info),
  L (link order), O (extra OS processing required), G (group), T (TLS),
  C (compressed), x (unknown), o (OS specific), E (exclude),
  p (processor specific)
  • 如果输出中包含 [32] .symtab(符号表段)、[34] .strtab(字符串表段),说明符号表完整;
  • 如果这些段不存在,说明 so 已被剥离符号表。

二、开始解析(ndk-stack 输出):

复制代码
# 核心命令格式
D:\Android\Sdk\ndk\25.2.9519653\ndk-stack.cmd -sym 你的so符号表目录 -dump crash_log.txt

具体示例如下:

C:\Users\jack\AppData\Local\Android\Sdk\ndk-bundle>ndk-stack.cmd -sym G:\tmp\MyApp11\app\build\intermediates\cmake\debug\obj\arm64-v8a\libplayer.so -dump G:\tmp\tmp_log\crash_log.txt
********** Crash dump: **********
Build fingerprint: 'HUAWEI/SEA-AL10/HWSEA-A:10/HUAWEISEA-AL10/104.0.0.121C00:user/release-keys'
#00 0x000000000006baf0 /apex/com.android.runtime/lib64/bionic/libc.so (__memcpy+96) (BuildId: b91c775ccc9b0556e91bc575a2511cd0)
#01 0x0000000000422dfc /data/app/com.Ling.player-pQuyWpT6I3Dz4I02Bvk3Mg==/base.apk!libplayer.so (offset 0x4b1000) (LingPlayer::start_()+344) (BuildId: ca487aac8417e18afaeb72f37a9309550d976984)
#02 0x0000000000422c90 /data/app/com.Ling.player-pQuyWpT6I3Dz4I02Bvk3Mg==/base.apk!libplayer.so (offset 0x4b1000) (task_start(void*)+28) (BuildId: ca487aac8417e18afaeb72f37a9309550d976984)
#03 0x00000000000cf7c0 /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+36) (BuildId: b91c775ccc9b0556e91bc575a2511cd0)
#04 0x00000000000721a8 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64) (BuildId: b91c775ccc9b0556e91bc575a2511cd0)
Crash dump is completed
相关推荐
WA内核拾荒者17 小时前
WhatsApp账号运营SOP的可视化编排与流水线监控
大数据·数据库·windows
Java小白笔记18 小时前
Windows系统免软件命令激活
java·网络·人工智能·windows·ai·ai编程
IT小盘20 小时前
17-AI应用防止越权访问知识库
服务器·网络·windows
rust&python20 小时前
通达信量化tdxquant快速开始第一个策略
windows·量化·通达信·tdxquant
Albart57520 小时前
Windows快速访问幽灵文件夹彻底解决|清除tmp残留_无效固定项_侧边栏残留(Win10_Win11通用)
windows·powershell脚本·快速访问修复·幽灵文件夹清理·tmp垃圾清除·电脑系统优化
clorinda21 小时前
把 DeepSeek Harness 打包成类似 Codex 的 Windows 桌面应用:Electron、一键启动、插件管理和动态壁纸
前端·javascript·windows·electron
zhonyu鱼1 天前
Pot 翻译:开源免费的跨平台划词翻译与 OCR 工具
windows·macos·开源·ocr·开源软件
Mr.亮先生1 天前
# 把 DeepSeek 官方 Agent 工作台,直接装进 Windows 启动器里
windows·deepseek·harness
曹牧2 天前
C#:List<string>特定格式输出
windows·c#
易点云徐源2 天前
(已解决)Photoshop 多画板 Alt+拖动复制随机卡死 4~5 分钟
windows·photoshop