iOS bug调试-malloc

运行程序时没有错误提示,出现如下信息

项目(702,0x198497310) malloc: stack logs being written into /private/var/mobile/Containers/Data/Application/461E4C49-CF65-49F6-8B76-AF30533D5390/tmp/stack-logs.702.100098000.TableDelete.3JtuAw.index

项目(702,0x198497310) malloc: recording malloc and VM allocation stacks to disk using standard recorder

项目(702,0x198497310) malloc: process 668 no longer exists, stack logs deleted from /private/var/mobile/Containers/Data/Application/461E4C49-CF65-49F6-8B76-AF30533D5390/tmp/stack-logs.668.1000a4000.TableDelete.CtzS13.index

将整个项目的源代码复制到别一个新建的项目中,再运行就没有问题了!

另:

在原来的项目中,使用debug模式启动项目就会出上面的错误,但不以debug模式启动时就能正常启动....

解决方法:

打开edit scheme ,在run模式下 取消Logging下的malloc stack选项即可(注:如果memory management下的enable guard malloc选项,则程序崩溃

NSZombieEnabled选项打开后,crash时能打印出具体的对象地址;Malloc Stack选项打开后,可以通过命令行打印出程序分配与释放空间的历史。两者相互结合,往往就能发现到底是什么对象被意外释放了。

另附上 xcode EXC_BAD_ACCESS调试

1.进入edit scheme 设置页面

2.在diagnostics面板中enable zombie objects和malloc stack选项

3.把xcode默认的debugger设置为GDB

4.当出现message sent to deallocated instance ***,键入info malloc-history ***5.根据堆栈信息,定位到内存泄露的代码

截图如下:

iOS bug调试-malloc_第1张图片

iOS bug调试-malloc_第2张图片
iOS bug调试-malloc_第3张图片
iOS bug调试-malloc_第4张图片

我猜你是打开了Run菜单下的Enable Guard Malloc的设置

你可能感兴趣的:(iOS bug调试-malloc)