HarmonyOS 鸿蒙Next:请问如何通过addr2line定位cppcrash

发布于 1周前 作者 sinazl 来自 鸿蒙OS

HarmonyOS 鸿蒙Next:请问如何通过addr2line定位cppcrash

通过开源基金会的网页https://docs.openharmony.cn/pages/v3.1/zh-cn/device-dev/subsystems/subsys-dfx-faultlogger.md/
最后面的介绍 我cppcrash-634-1546351208的文件内容如下 但是没办法解析请问一下如何操作

Pid:634
Uid:1000
Process name:ui_service
Reason:Signal:SIGSEGV(SEGV_MAPERR)@0x00000000
Fault thread Info:
Tid:2030, Name:RSRenderThread
#00 pc 000000000019e2e0(00000000b45232e0) /system/lib/librender_service_base.z.so(_ZN4JsonlsERNSt3__h13basic_ostreamIcNS0_11char_traitsIcEEEERKNS_5ValueE+64491)
#01 pc 0000000000000000(0000000000000000) Unknown
Registers:
r0:ada83930 r1:00000000 r2:3f800000 r3:0000000b
r4:012ab550 r5:00000000 r6:00fa1c8c r7:ada83964
r8:ada83930 r9:00000000 r10:b6fdc348
fp:b6fdc348 ip:b6282a90 sp:ada83908 lr:b457989d pc:b45232e0
FaultStack:
Sp0:ada83908 ada83964
ada8390c b457989d
ada83910 534f484f

6 回复
欢迎开发小伙伴们进来帮帮楼主
addr2line -e [path to libmali-bifrost-g52-g2p0-ohos.so] 94e0bc

形如上面的CLI命令 后面的偏移量是怎么来的呢

楼主您好,可参考: https://gitee.com/openharmony/hiviewdfx_faultloggerd/blob/master/docs/usage.md
开发者您好,此问题已反馈技术人员,有消息第一时间告知您,感谢。

在HarmonyOS鸿蒙系统中,通过addr2line工具定位C++崩溃(cpp crash)通常涉及以下几个步骤:

  1. 获取崩溃地址:首先,确保你的程序在崩溃时生成了core dump文件或者日志中包含了崩溃时的内存地址。这些地址是关键信息,用于后续的定位。

  2. 编译时添加调试信息:确保在编译C++程序时使用了-g选项,这样生成的二进制文件会包含调试信息,addr2line才能正确解析。

  3. 使用addr2line定位:使用addr2line工具将崩溃地址转换为源代码中的文件和行号。命令格式通常如下:

    addr2line -e <binary_file> <address>
    

    其中,<binary_file>是崩溃的程序二进制文件,<address>是崩溃时的内存地址。

  4. 解析结果addr2line会输出崩溃发生的源代码文件名和行号,根据这些信息可以进一步分析崩溃原因。

注意,如果程序经过了符号剥离(strip),直接定位可能会失败。此时,需要确保有完整的调试符号文件(如.pdb.dSYM),或者在发布版本中保留必要的调试信息。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部