我有一个来自Google Play服务的应用崩溃报告,如下所示:
backtrace:
#00 pc 00000000001b46a0 library.so
#01 pc 0000000000604464 library.so
#02 pc 0000000000c8ed1c library.so
我还有一个.map
文件,library.so
可帮助我找到函数名称并将stacktrace转换为更具可读性的格式:
backtrace:
#00 pc 00000000001b46a0 library.so foo()
#01 pc 0000000000604464 library.so bar()
#02 pc 0000000000c8ed1c library.so zoo()
但是,手动解析函数名称容易出错,并且不会给我行号是导致崩溃的源代码。
我考虑过library.so
在发布新版本时存储未剥离版本的想法,以便可以使用ndk-stack工具,但是剥离和未剥离二进制文件的AFAIK函数地址不同。
所以我的问题是,有可能继续发布剥离后的二进制文件,并且有办法用行号自动符号化堆栈跟踪吗?
任何建议将不胜感激
ndk-stack
正是为此目的而构建的,请放心。您将未剥离的library.so喂入它,并获得可以实现的最佳堆栈跟踪!
确保您不混用调试/发布版本,并为进入生产环境的每个二进制文件保留未剥离的版本(或确保可以可靠地为相应的git标记重建未剥离的版本)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句