内存调试一些方法:
1、signal SIGABRT:
越界,访问没有初始化的地址或者错误地址
方法一:image lookup --address
方法二:全局断点:Breakpoint navigator —> Create a breakpoint —> Exception Breakpoint
2、EXC_BAD_ACCESS
向某块内存发送消息,但是该内存无法响应对应的消息指令。向一个已释放的对象发送消息。
方法一:打开僵尸🧟♀️对象调试:Edit Scheme —> Diagnostics —> Memory Management —> Zombie Objects
方法二:符号断点:Breakpoint navigator —> Create a breakpoint —>Symbolic Breakpoint
方法三:Address Sanitizer:Target —> Edit Scheme —> Diagnostics —> Runtime Sanitization —> Address Sanitizer
3、Memory Leak
循环引用
方法一:Instruments->Leak
方法二:Debug Memory Graph
Not Release
单纯的没有释放,可能 VC 的 dealloc 走了
4、Analyze静态分析
Product —> Analyze(Shift + Command + B)
网友评论