news 2026/9/5 2:06:58

Flutter OHOS 解析flutter相关的cppcrash堆栈

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Flutter OHOS 解析flutter相关的cppcrash堆栈

本文介绍如何解析Flutter OpenHarmony化版本libflutter.so相关的崩溃堆栈。

1. 介绍

llvm-addr2line 工具是一个可以将指令的地址和可执行映像转换成文件名、函数名和源代码行数的工具。一般适用于带有 symbol 信息的so库。

2. 工具位置

DevEco StudioCommand Line Tools for OpenHarmony的sdk目录下有这个工具,对应路径如下:

  • Windows: sdk/default/openharmony/native/llvm/bin/llvm-addr2line.exe
  • Linux/Mac: sdk/default/openharmony/native/llvm/bin/llvm-addr2line

可以将 llvm-addr2line 所在目录配置到环境变量PATH里,如

export PATH=/Applications/DevEco-Studio.app/Contents/sdk/default/openharmony/native/llvm/bin:$PATH

3. 使用命令

llvm-addr2line -f -e so.unstripped/libflutter.so[addr1][addr2]

4. 如何获取带有 symbol 的 libflutter.so 文件

4.1 使用本地编译的engine产物
  • debug 版本
    • src/out/ohos_debug_unopt_arm64/so.unstripped/libflutter.so
  • release 版本
    • src/out/ohos_release_arm64/so.unstripped/libflutter.so
  • profile 版本
    • src/out/ohos_profile_arm64/so.unstripped/libflutter.so
4.2 在云端产物中下载
  • 在使用的flutter_flutter版本中,找到使用的flutter_engine版本的commitid。
    • 在文件flutter_flutter/bin/internal/engine.ohos.har.version中。
  • 根据commitid 8ef94277f0029e61ff6a96f630d0f10b60330cd8,下载对应版本 libflutter.so 的zip文件
    • debug 版本,https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com/flutter_infra_release/flutter/8ef94277f0029e61ff6a96f630d0f10b60330cd8/ohos-arm64/symbols.zip
    • release 版本,https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com/flutter_infra_release/flutter/8ef94277f0029e61ff6a96f630d0f10b60330cd8/ohos-arm64-release/symbols.zip
    • profile 版本,https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com/flutter_infra_release/flutter/8ef94277f0029e61ff6a96f630d0f10b60330cd8/ohos-arm64-profile/symbols.zip

5. 使用示例

libflutter.so 相关的部分崩溃日志:

#00pc00000000001b5a34/system/lib/ld-musl-aarch64.so.1(__timedwait_cp+188)(ef860a9c8bd64e964a4dd4ef838876e1) #01pc00000000001b7a3c/system/lib/ld-musl-aarch64.so.1(__pthread_cond_timedwait+188)(ef860a9c8bd64e964a4dd4ef838876e1) #02pc000000000021d450/data/storage/el1/bundle/libs/arm64/libflutter.so(85c51e03a4f191b946582701e79e1be4a0c83959) #03pc00000000001f21f4/data/storage/el1/bundle/libs/arm64/libflutter.so(85c51e03a4f191b946582701e79e1be4a0c83959)

获取带有 symbol 的文件so.unstripped/libflutter.so,可以将错误堆栈中的地址转换为具体的报错代码行数。

执行命令:

llvm-addr2line -f -e so.unstripped/libflutter.so00000000001b5a3400000000001b7a3c000000000021d45000000000001f21f4

解析后的结果:

_ZNSt21_LIBCPP_ABI_NAMESPACE21__libcpp_condvar_waitB6v15004EP14pthread_cond_tP15pthread_mutex_t/home/hazy/tools/ohos-v5.0.3.900/command-line-tools/sdk/default/openharmony/native/llvm/include/c++/v1/__threading_support:335_ZN7flutter16PlatformViewOHOS13NotifyChangedERK7SkISize/home/hazy/work/engine_build/engine_daily/src/out/ohos_release_arm64/../../flutter/shell/platform/ohos/platform_view_ohos.cpp:192

其他

  • 分析CppCrash
  • flutter_flutter
  • flutter_engine
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 2:06:24

GPT-5.6 Sol:大模型自动化压缩框架,在AGI基准上实现高效推理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 2:03:54

智能桌宠开发实战:从AI模型集成到桌面应用部署

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 2:02:34

Flutter OHOS 使用hvigor插件方式编译flutter项目

将原先通过直接更改项目配置文件(app.json5、build-profile.json5、oh-package.json5等)的方式优化为通过Hvigor插件方式动态更新配置,可避免由于配置文件被频繁更改而可能造成的提交冲突问题。直接依赖插件源码来构建,这样编写插…

作者头像 李华
网站建设 2026/9/5 2:02:30

基于多模态AI的电竞比赛队内语音与选手反应分析技术实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 1:56:31

Redis高性能架构深度解析:从单线程模型到I/O多路复用的核心原理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/5 1:56:11

高性能跨平台网络通信框架 HP-Socket v6.0.9 发布

项目主页 : http://www.oschina.net/p/hp-socket开发文档 : https://www.docin.com/p-4592706661.html下载地址 : https://github.com/ldcsaa/HP-SocketQQ Group: 44636872, 663903943 v6.0.9 更新 一、主要更新 优化Linux通信组件多路复用处理架构,避免“惊群”问…

作者头像 李华