2019-08-21 ios 常用bug日志解析定位

主线程卡死调试

更新到ios13出现的问题 pagecontrol和bannerview的layoutsubviews都设定了pagecontrol的大小 导致死循环,但是界面假死,没闪退,内存疯涨
Error: Unable to Capture View Hierarchy.
Details: Log Title: Data source expression execution failure.
Log Details: error evaluating expression “(id)[[(Class)objc_getClass("DBGTargetHub") sharedHub] performRequestWithRequestInBase64:@"…"]”: error: Execution was interrupted.
The process has been returned to the state before expression evaluation.

Log Method: -[DBGDataSourceConnectionLibViewDebugger _executeLLDBExpression:forRequest:onPotentialThread:iteration:]_block_invoke
Method: -[DBGViewDebugger _initiateInitialRequestWithDataSourceVersion:]_block_invoke
Environment: Xcode 11.1 (11A1027) debugging iPhone 11 Pro Max iOS Simulator 13.1 (17A844).
Please file a bug at https://feedbackassistant.apple.com with this warning message and any useful information you can provide.
升级ios13出现的app交互无反应 无法进行图层调试查看是否有蒙层 发现是主线程死循环 。

如果xcode调试可以复现可以直接暂停
测试机复现如图


进入调试

时不时点暂停


有可能暂停到不认识的方法 放行在暂停
内存1.42GB爆掉了 崩溃定位到代码行

参考自:Bugly和dispatch_once使用不当,会造成UI界面卡死。笔者在前段时间碰见了这样的一个卡死的情况,特意记录下来。(https://wellphone.me/post/2017/bugly_dispatch_once_crash/)

1:log日志

控制台应用Console.app

闪退加个*** debug环境

依赖dYSM文件

2:连接XCode调试

断点

3:设备闪退日志调试

设备日志
导出为crash

将导出来的crash文件和symbolicatecrash 和本次crash对应的dSYM放在同一个文件夹下
找到symbolicatecrash 复制出来

iosm:未命名文件夹 xjk$ find /Applications/Xcode.app -name symbolicatecrash -type f
/Applications/Xcode.app/Contents/Developer/Platforms/WatchSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode.app/Contents/Developer/Platforms/AppleTVSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/DVTFoundation.framework/symbolicatecrash
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
iosm:未命名文件夹 xjk$ 

执行命令生成符号表crash文件 如果报"DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69. 执行:export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer" 如下:

Last login: Wed Aug 21 15:06:48 on ttys000
iosm:~ xjk$ cd /Users/xjk/Desktop/未命名文件夹
iosm:未命名文件夹 xjk$ ./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash
Error: "DEVELOPER_DIR" is not defined at ./symbolicatecrash line 69.
iosm:未命名文件夹 xjk$ export DEVELOPER_DIR="/Applications/XCode.app/Contents/Developer"
iosm:未命名文件夹 xjk$ ./symbolicatecrash ./*.crash ./*.app.dSYM > symbol.crash
iosm:未命名文件夹 xjk$ 

最后结果如下图
生成符号表闪退文件

4:上报友盟调试(转自:https://www.jianshu.com/p/b678c8a3eb9a)

1.打开友盟统计分析的错误列表页

image

2.下载到报表中心,将报表下载到本地

image

3.第一步 下载错误分析工具 并解压zip得到umcrashtool文件,可将umcrashtool与已下载的xxx.csv文件放入同一目录下

4.第二步 在terminal中运行umcrashtool命令,参数为错误分析的.csv文件绝对路径,如下:
xxxxxxx$ [umcrashtool文件绝对路径] [csv文件绝对路径]

5.之后就可以看到错误情况了,在哪个文件多少行的哪个方法中

image

6.常见错误分析

  • Application received signal SIGSEGV
  • Application received signal SIGBUS
  • -[__NSArrayM objectAtIndex:]: index 4294967295 beyond bounds for empty array
  • -[JKArray objectAtIndex:]: index (0) beyond bounds (0)
    SIGSEGV和SIGBUS一般是因为访问已被释放的内存或者调用不存在的方法导致的,余下两个就是数组越界的问题了,这些大家都知道的。

5:腾讯bugly上传对应的dYSM就可以了

你可能感兴趣的:(2019-08-21 ios 常用bug日志解析定位)