开发一个项目中, 出现了[Obj retain] message sent to deallocated instance 0x… 的错误, 字面翻译是向一个已经释放的对象发送了消息, 现在需要定位在哪里多次释放了一个Obj, 但是xcode并没有给标记出来.
这时, 打开活动监视器
找到当前crash的项目的活动进程PID, (不要结束项目)
此时, 我们拿到了 项目的 PID 和 发送错误的地址信息
PID: 2054
Crash 地址: 0x7fdf6d066e00
打开“终端”,输入以下命令:
sudo malloc_history 2054 0x7fdf6d066e00
结果出现error如下:
解决方法:
然后, 重新输入上述命令, 输入密码后, 即可打印出相关的 log 日志.
最后的那个[WKWebView xxx_initWithFrame]方法就是我们自定义的方法, 这里重复释放了WKWebView. 找到出错的原因, 可以定位问题.
本文介绍了一种通过命令行工具定位Objective-C项目中WKWebView内存泄漏的方法,利用sudomalloc_history命令配合进程ID和崩溃地址,成功定位并解决了WKWebView被重复释放的问题。
1436

被折叠的 条评论
为什么被折叠?



