What & Why
最近项目收尾有空闲时间,于是想完善一下工具链。接入了DebugDrawer,加了不少小功能功能,还蛮欣喜的。
后来想想流程上的一些细节,想到了测试在反馈崩溃bug的时候,我们经常要拿他们的测试机过来,连上手机以后,根据日志里的崩溃信息来定位问题。
这个步骤有点繁琐,于是决定写个小工具,debug版本测试的时候,如果遇到了崩溃,直接把异常堆栈发到我们的聊天软件(企业微信)可好?
看了下企业微信有提供发送消息的api,只要把异常信息通过内网服务器转发到企业微信就好了。
大致流程
- app崩溃
- 捕获异常
- 重启应用
- (弹窗提示是否发送崩溃堆栈到服务器)发送异常堆栈、账号、等信息到服务器
- 服务器转发异常到企业微信
遇到的问题
android这边,debug代码默认是不混淆的,所以从异常堆栈可以直接看出出错的代码位置,但是和ios那边沟通了一下,发现他们的异常堆栈需要用符号表解析一下才可用。
他们也有个类似mapping的文件叫dSYM(dSYM其实是个目录,实际的mapping文件为:dSYM/Contents/Resources/DWARF/${appName}),需要用xcrun atos把异常堆栈解析成可读的代码。
因为我们的编译机就是mac系统,所以自带xcrun,写个脚本转一下就好了。
How
解析ios异常堆栈的代码
analysisIOSCrash.sh
|
|
服务器端转发代码
使用的时候需要替换 cropid
、cropsecret
、agentid
这几个参数
结语
程序员需要学会更多偷懒的姿势😁