【问题标题】:Native crash reports contains offsetted addresses本机崩溃报告包含偏移地址
【发布时间】:2020-12-10 15:10:18
【问题描述】:

我已经按照documentation 集成了Huawei Crash Service,并且可以在Web 控制台中看到NDK 崩溃。但是,报告中的地址偏移了4,所以当我想象征崩溃时,我得到了错误的结果。

例如在logcat中我可以看到

2020-12-10 15:23:51.981 5914-5914/? D/formatEventInfo: statck
    #00 pc 00c57c10 /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so(std::set_unexpected(void (*)())) [arm64-v8a::]
    #01 pc 00c57d88 /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so(unknow) [arm64-v8a::]
    #02 pc 00c54b54 /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so(unknow) [arm64-v8a::]
    #03 pc 00c5425c /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so(__cxa_get_exception_ptr) [arm64-v8a::]
    #04 pc 00c541dc /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so(unknow) [arm64-v8a::]

并且该地址出现在 Web 控制台中,而有效的 logcat 崩溃堆栈跟踪是

    --------- beginning of crash
2020-12-10 15:23:52.067 6246-6246/? I/crash_dump64: obtaining output fd from tombstoned, type: kDebuggerdTombstone
2020-12-10 15:23:52.068 871-871/? I//system/bin/tombstoned: received crash request for pid 5914
2020-12-10 15:23:52.069 6246-6246/? I/crash_dump64: performing dump of process 5914 (target tid = 5914)
2020-12-10 15:23:52.099 6246-6246/? A/DEBUG: pid: 5914, tid: 5914, name: o.a.b  >>> package-name <<<
2020-12-10 15:23:52.104 6246-6246/? A/DEBUG:       #01 pc 0000000000c57c0c  /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so
2020-12-10 15:23:52.104 6246-6246/? A/DEBUG:       #02 pc 0000000000c57d84  /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so
2020-12-10 15:23:52.104 6246-6246/? A/DEBUG:       #03 pc 0000000000c54b50  /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so
2020-12-10 15:23:52.104 6246-6246/? A/DEBUG:       #04 pc 0000000000c54258  /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so
2020-12-10 15:23:52.104 6246-6246/? A/DEBUG:       #05 pc 0000000000c541d8  /data/app/package-name-w5yGIc9ek_yTyk1ARvNP-w==/lib/arm64/libName.so (__cxa_throw+120)

有什么想法吗?

【问题讨论】:

    标签: android android-ndk crash-reports huawei-mobile-services huawei-developers


    【解决方案1】:

    您得到的崩溃报告是正确的。行号(00c57c10、00c57c0c 等)不需要完全匹配。因为地址段是一个范围,例如,您的 00c57c10 和 c57c0c 可能在您文件的同一地址中。如果你上传原生符号文件,你可能会得到一个可读的崩溃报告。

    这里你可以看到一个例子:Obtaining an NDK Crash Report


    您的 uuid 似乎是因为文件的一些错误而丢失:[arm64-v8a::];[arm64-v8a::]... 它们应该与 uuid 一起使用。

    Documentation of the AppGallery Connect Crash service

    【讨论】:

    • 不幸的是,这不是我的情况,因为当我符号化两个崩溃日志时,我的源代码中的行号不同(实际上是不同的函数)。首先,为什么报告的崩溃日志地址与 logcat 中的地址不同?
    • @sruzic 是的,解析后不同的数字(00c57c10, 00c57d88),你会得到相同的文件行号相同的崩溃报告(...native .crash.creat,cpp:14)。
    • 你不明白我的意思。当我表示第一个崩溃日志(#00 pc 00c57c10, #01 pc 00c57d88, ...)时,我得到一组(错误)行号,当我表示第二个崩溃日志(#01 pc 0000000000c57c0c, #02 pc 0000000000c57d84, ...)时,我得到另一个(正确 - 因为我知道我故意在哪里抛出异常只是为了测试 NDK 崩溃报告)一组行号。
    • 我压缩的原生符号文件大于 5MB,所以无法上传。
    • @sruzic 好的,但您似乎将这两个报告按相反的顺序排列。第二份崩溃报告来自华为崩溃服务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-30
    相关资源
    最近更新 更多