主线程卡死调试
更新到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.打开友盟统计分析的错误列表页
image2.下载到报表中心,将报表下载到本地
image3.第一步 下载错误分析工具 并解压zip得到umcrashtool文件,可将umcrashtool与已下载的xxx.csv文件放入同一目录下
4.第二步 在terminal中运行umcrashtool命令,参数为错误分析的.csv文件绝对路径,如下:
xxxxxxx$ [umcrashtool文件绝对路径] [csv文件绝对路径]
5.之后就可以看到错误情况了,在哪个文件多少行的哪个方法中
image6.常见错误分析
- 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一般是因为访问已被释放的内存或者调用不存在的方法导致的,余下两个就是数组越界的问题了,这些大家都知道的。
网友评论