如何在LLDB下排查message sent to deallocated instance问题
2015-09-28 16:34
751 查看
非常好的文章,转载自:http://www.devdiv.com/lldb_message_sent_to_deallocated_instance_-blog-50901-50856.html
在XCode的以前版本中,如果遇到了1 | message sent to deallocated instance 0x6d564f0 |
在新的XCode里,调试器默认使用LLDB,我就讲一下如何在LLDB状态下定位到由于内存操作不当引起的Crash
首先我有一段会发生崩溃的代码:
1 | NSString *themePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:themePathTmp]; |
2 | if (themePath) |
3 | self.backgroundIV.image = [UIImage imageWithContentsOfFile:[themePath stringByAppendingPathComponent: @"mask_1.png" ]]; |
4 |
5 | [themePath release]; |
运行代码,出现下面的崩溃现象
下面我们打开“活动监视器”,找到我们对应的PID,我们的Target为HPThemeManager,只要找到HPThemeManager对应的PID就可以(HPThemeManager是在论坛里下载的,本来正在看代码,就直接拿他来作试验了)
现在,我们得到了两个主要的信息:
进程ID:50127
崩溃地址:0x6d564f0
我们打开终端,输入以下命令:
1 | sudo malloc_history 50127 0x6d564f0 |
这样我们用能定位到这行代码
1 | NSString *themePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:themePathTmp]; |
1 | [themePath release]; |
相关文章推荐
- android 代码实现控件之间的间距
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- Linux 自检和 SystemTap
- [Android]在代码里运行另一个程序的方法
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- 肯特·贝克:改变人生的代码整理魔法
- Python 七步捉虫法
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 网页恶意代码的预防
- IE7降低内存和降低CPU的几个技巧
- 高手写的Tracer-Flash代码调试类代码下载
- CSS代码缩写技巧
- 非主流Q-zOne代码代码搜集第1/2页
- CreateWeb.vbs 代码
- 路由器的配置与调试
- 如何高效的使用内存