怎样在xcode4.x里面使用Memory Leaks和Instruments

EXC_BAD_ACCESS错误,我通常建议:

  1.在可执行选项中设置NSZombieEnabled参数,这有时会帮缩小问题的范围;

  2.运行apple的内存检测工具,如 Leaks ,以便寻找内存问题;

  3设定一个断点,单步运行代码,直到你找到引起崩溃的位置;

  4.注释代码,直到不崩溃为止,然后再从后往前查找错误;

  现在让我们从第一条开始实验

NSZombieEnabled选项对于崩溃毫无办法,所以你完全可以放弃抵抗。

当你使用一个已经被销毁的对象,NSZombieEnabled会标志一个警告,所以NSZombieEnabled只是一个flag。这是一个良好的开端,因为大多数崩溃的原因都是使用了已经销毁的对象。

  按照以下设置:

点击OK, 重新运行app,随便操作下使程序崩溃。 查看下console log你就会看到类似如下信息:

2011-02-03 12:07:44.778 XXXX ***-[XXXXX:]: message sent to deallocated instance ...

2.内存泄漏最简单的办法就是:(快捷键:command+shift+b)

你会看到如下图:

怎么修改,自己慢慢按提示一步一步改

不幸的是,你不能依靠以上方法找出一切问题。我们还得使用一个强大的自动化工具来帮助你检查程序是否有内存泄漏– the Leaks Instrument。

接下来就是代开Leaks Instrument工具,如下图:



选中Leaks,点击Profile,出现以下试图,如图:

点击stop(红色的那个),设置调试参数:(选择Leaks,选择Call Tree, 选中如下图的的3个复选框),然后点击(Record)按钮 重启





,淡红色那条就代表内存泄漏了,下面两个不同的函数就表示存在内存泄漏的函数, 双击一个函数的名字,它会带你直接到存在内存泄露的这行代码。这可以给你一个很好的错误位置提示,如果你查看代码并加以思考,你应该能够找出问题所在并解决它。


  所以,为什么不看看代码,并且看看你是否能找出问题所在并修正吗?一旦你作出修改,并且能够无错误提示的跑Leaks。如果通过,表示你完成了

怎样在xcode4.x里面使用Memory Leaks和Instruments

时间: 2024-11-07 12:29:55

怎样在xcode4.x里面使用Memory Leaks和Instruments的相关文章

xcode里面使用Memory Leaks和Instruments检测内存泄漏

教程截图: Leaks和Instruments教程[检测内存泄露]" src="http://pic002.cnblogs.com/images/2011/283130/2011080816513182.jpg"> 作为一名无证程序员,无论你多么精通Objective-C的内存管理,随着时间的推移,你也不可避免的犯内存相关的错误.但通常因为代码量太大,以至于你不可能一行一行的去排除(等你解决完,你设计的动车早相撞了!) 幸运的是,苹果已经提供了一些好的方式来帮助你找到应

内存泄露 Memory Leaks 内存优化【总结】

什么是内存泄露 内存管理一直是Java 所鼓吹的强大优点.开发者只需要简单地创建对象,而Java的垃圾收集器将会自动管理内存空间的分配和释放. 但在很多情况下,事情并不那么简单,在 Java程序中总是会频繁地发生内存泄露(Memory Leaks). 内存泄漏就是:当某些对象不再被应用程序所使用,但是由于仍然被引用而导致垃圾收集器不能释放他们. 或者说是:我们对某一内存空间使用完成后没有释放. 用白话来说就是:该回收的内存没被回收. 要理解这个定义,我们需要理解内存中的对象状态.下图展示了什么是

Identify Memory Leaks in Visual CPP Applications(VLD内存泄漏检测工具)

原文地址:http://www.codeproject.com/Articles/1045847/Identify-Memory-Leaks-in-Visual-CPP-Applications 基于CPOL License Identify Memory Leaks in Visual CPP Applications Visual Leak Detector (VLD) is an easy to use memory leak detection system. The installat

解决:Detected memory leaks

最近在一个项目中,程序退出后都出现内存泄漏: Detected memory leaks!Dumping objects ->{171} normal block at 0x05785AD0, 12 bytes long.Data: << N       N x 7 > 3C AC 4E 10 00 00 00 00 BC A4 4E 10 78 B6 37 00Object dump complete. 解决方法: 1.在程序中的尽可能靠近启动代码的地方(足够前的地方,只要在泄漏

On Memory Leaks in Java and in Android.

from:http://chaosinmotion.com/blog/?p=696 Just because it's a garbage collected language doesn't mean you can't leak memory or run out of it. Especially on Android where you get so little to begin with. Now of course sometimes the answer is that you

[C++] How to prevent memory leaks

How to prevent memory leaks ? overload new/delete

[Angular2 Router] Exiting an Angular 2 Route - How To Prevent Memory Leaks

In this tutorial we are going to learn how we can accidentally creating memory leaks in our application while using the Angular 2 router. We are going to learn how we can prove that the memory leak is happening, we are going to learn what is causing

_CrtSetBreakAlloc简单内存泄漏检测方法,解决Detected memory leaks!问题

我的环境是: XP SP2 . VS2003 最近在一个项目中,程序退出后都出现内存泄漏: Detected memory leaks! Dumping objects -> {98500} normal block at 0x05785AD0, 152 bytes long. Data: << N N x 7 > 3C AC 4E 10 00 00 00 00 BC A4 4E 10 78 B6 37 00 Object dump complete.   而且每次退出都是一样的.

Android性能优化之被忽视的Memory Leaks

起因 写博客就像讲故事,得有起因,经过,结果,人物,地点和时间.今天就容我给大家讲一个故事.人物呢,肯定是我了.故事则发生在最近的这两天,地点在coder君上班的公司.那天无意中我发现了一个奇怪的现象,随着我点开我们App的页面,Memory Monitor中显示占用的内存越来越多(前面的页面已经finish掉了).咦?什么鬼? 经过 有了问题就解决嘛,俗话说的好,有bug要上,没有bug写个bug也要上.那到底是是什么问题会引起这个现象呢? Android中内存相关的问题无非就是这么几点: M