如何在LLDB下排查message sent to deallocated instance问题
来源:互联网 发布:淘宝网演出服装 编辑:程序博客网 时间:2024/05/16 15:13
在XCode的以前版本中,如果遇到了我们可以使用info malloc-history 0x6d564f0来查看调用堆栈来查看崩溃发生的地方,这种方法这里不作阐述,大家自行百度。
学过内存管理的人都应该知道在这里themePath并没有被retain,所以如果写了release,那么必然会发生崩溃情况。首先我们需要对开发的环境变量进行设置
结果显示为:
[代码]c#/cpp/oc代码:
1
message sent to deallocated instance 0x6d564f0
在新的XCode里,调试器默认使用LLDB,我就讲一下如何在LLDB状态下定位到由于内存操作不当引起的Crash
首先我有一段会发生崩溃的代码:
[代码]c#/cpp/oc代码:
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
我们打开终端,输入以下命令:
[代码]c#/cpp/oc代码:
1
sudo malloc_history 50127 0x6d564f0
这样我们用能定位到这行代码
[代码]c#/cpp/oc代码:
1
NSString *themePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:themePathTmp];
对themePath进行排查,就找到了崩溃的罪魁祸首
[代码]c#/cpp/oc代码:
1
[themePath release];
0 0
- 在LLDB下排查message sent to deallocated instance问题
- 如何在LLDB下排查message sent to deallocated instance问题
- 如何在LLDB下排查message sent to deallocated instance问题
- 如何在LLDB下排查message sent to deallocated instance问题
- 如何在LLDB下排查message sent to deallocated instance问题
- 如何在LLDB下排查message sent to deallocated instance问题
- 排查message sent to deallocated instance问题
- 如何调试 message sent to deallocated instance 的问题
- 解决LLDB模式下出现message sent to deallocated instance错误
- message sent to deallocated instance问题的解决方法(gdb和lldb)
- message sent to deallocated instance问题的解决方法(gdb和lldb)
- Xcode做ios开发时 message sent to deallocated instance问题的解决方法(gdb和lldb)
- Xcode做ios开发时 message sent to deallocated instance问题的解决方法(gdb和lldb)
- message sent to deallocated instance问题的解决方法(gdb和lldb)
- message sent to deallocated instance问题的解决方法(gdb和lldb)
- Xcode做ios开发时 message sent to deallocated instance问题的解决方法(gdb和lldb)
- message sent to deallocated instance 0x7f9a6d85dca0 错误的排查
- message sent to deallocated instance
- Android ListView和ListAdapter
- Oracle SYSTEM 表空间过满的处理(扩展表空间)
- std::unorder_hashmap分析
- CTA图像中肝脏血管增强及肝脏与血管同时分割的方法
- 畅通工程 行电1232最小生成树
- 如何在LLDB下排查message sent to deallocated instance问题
- JS的输入正则验证
- JavaSE基础第一部分:搭建环境与编写第一个程序
- SAP ABAP 用debug方法修改dictionary数据
- PAT (Basic Level) Practise (中文)1003. 我要通过!(20)
- ruby reading record
- java I/O流
- MySql数据类型分析(银行家舍入法) Part3
- 30分钟,让你成为一个更好的程序员