iOS 内存泄露、野指针调试技巧

博客介绍了使用Xcode进行内存问题检测的方法。一是启用Zombie Object检测悬挂指针,设置后运行可在控制台获取更多crash信息;二是通过Product -> Analysis进行内存泄露初步检测,有手动和自动两种方式;三是利用Instruments工具,运行时检测内存泄露并定位代码位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、启用Zombie Object进行悬挂指针的检测

       一般来说,出现EXC_BAD_ACCESS错误的原因都是悬挂指针导致的,但具体是哪个指针是悬挂指针还不确定,因为控制台并没有给出具体crash信息。

      要想得到更多的crash信息,你需要启动NSZombieEnabled。具体步骤如下:1、选中Edit Scheme,并点击 2、Run -> Diagnostics -> Enable Zombie Objects 设置完之后,再次运行和点击悬挂指针,虽然会再次crash,但这次控制台打印了以下有用信息

      继续运行,在控制台上观察到出现野指针的地址,以及被_NSZombie_修饰的对象,此对象造成野指针的对象。

二、应用Product -> Analysis进行内存泄露的初步检测

      手动静态分析:每次都是通过点击菜单栏的Product -> Analyze或快捷键shift + command + b

     自动静态分析:在Build Settings启用Analyze During 'Build',每次编译时都会自动静态分析

三、instrument

      有时使用静态分析能够检查出一些内存泄露问题,但是有时只有运行时使用Instruments才能检查到

     点击Xcode的菜单栏的 Product -> Profile 启动Instruments

     出现Instruments的工具集,选中Leaks子工具点击

     打开Leaks工具之后,点击红色圆点按钮启动Leaks工具,在Leaks工具启动同时,模拟器或真机也跟着启动

    发现内存泄露之后的定位:

    首先点击Leak Checks时间条那个红色叉

    然后双击某行内存泄露调用栈,会直接跳到内存泄露代码位置

转载于:https://www.cnblogs.com/xiaonizicome/p/10935140.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值