如何使用xcode的Diagnostics选项调试crash

Enable Malloc Scribble(开启Malloc Scribble(内存涂鸦)Malloc Scribble的基本思想是,在对象被释放后,在对应内存块中填上不可访问的无意义的数据(0x55),那么我们再使用这个对象时,程序将直接Crash。参考:http://weibo.com/p/10080852e0242ca7393837a6ecec8009daad5a?k=iOS知识小集&from=501&_from_=huati_topic

Memory Management options:

  • Enable Scribble. Fill allocated memory with 0xAA and deallocated memory with 0x55.

  • Enable Guard Edges. Add guard pages before and after large allocations.

  • Enable Guard Malloc. Use libgmalloc to catch common memory problems such as buffer overruns and use-after-free.

  • Enable Zombie Objects. Replace deallocated objects with a “zombie” object that traps any attempt to use it. When you send a message to a zombie object, the runtime logs an error and crashes. You can look at the backtrace to see the chain of calls that triggered the zombie detector.

Logging options:

  • Distributed Objects. Enable logging for distributed objects (NSConnectionNSInvocation,NSDistantObject, and NSConcretePortCoder).

  • Garbage Collection Activity. Enable various logging facilities in the garbage-collected memory allocator. Log when a collection occurs, log when new regions are allocated, and log all weak reference manipulations.

  • Malloc Stack. Record stack logs for memory allocations and deallocations.

  • Log Exceptions. Log Objective-C runtime exception handling.

  • Log DYLD API Usage. Log dynamic-linker API calls (for example, dlopen).

  • Log Library Loads. Log dynamic-linker library loads.

Debugger options:

  • Stop on Debugger() and DebugStr(). Enable Core Services routines that enter the debugger with a message. These routines send a SIGINT signal to the current process.

The Xcode static analyzer parses the project source code and identifies these types of problems:

  • Logic flaws, such as accessing uninitialized variables and dereferencing null pointers

  • Memory management flaws, such as leaking allocated memory

  • Dead store (unused variable) flaws

  • API-usage flaws that result from not following the policies required by the frameworks and libraries the project is using


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值