Xcode 7 调试野指针利器 Address sanitizer

什么是Address Sanitizer?

AddressSanitizer is a fast memory error detector. It consists of a compiler instrumentation module and a run-time library. The tool can detect the following types of bugs:

Out-of-bounds accesses to heap, stack and globals

Use-after-free

Use-after-return (to some extent)

Double-free, invalid free

Memory leaks (experimental)

总结来说:**用来解决内存问题的**。
当发生Crash时,打印这个Crash内存的使用记录。通过这个使用记录来调试Bug。

Xcode中如何使用到?

  1. 你需要安装了xcode7
  2. 在xcode7中打开设置。

  3. 发生Crash后,拷贝内存地址

  4. 选中内存查看选项:View Memory

  5. 输入刚才的内存地址

  6. 点开右边的列表,就能看到内存调用记录了。

  7. 根据记录解决问题去吧。
时间: 2024-10-09 03:31:04

Xcode 7 调试野指针利器 Address sanitizer的相关文章

(转)在Xcode 7上直接使用Clang Address Sanitizer

原文地址: http://www.cocoachina.com/ios/20150730/12830.html WWDC 2015上,除了Swift 2.0外,还有一个令人激动的消息:可以直接在Xcode 7上使用Clang的地址消毒剂(Address Sanitizer)了.这篇文章中我们将详细讨论下这个功能,比如它是怎样工作的,以及使用的方法.这是Konstantin Gonikman提议的话题. C语言中一种异常危险的情况 从很多方面来看,C语言都是一种伟大的编程语言.事实上,发明至今已逾

iOS开发之Xcode常用调试技巧总结

两种最常见最普通的方法: 1.NSLog,最简单的方法,查看变结 中是否有值,有什么值,是不是自己需要的值,然后找到bug. 2.po命令,在程序进入断点处,在控制台中输入po 变量名,也可以像NSLog一样查看变量是否有值,有什么值. 今天主要介绍点高大上的方法. 一.Memory Graph Xcode8新增:Memory Graph解决闭包引用循环问题 这个时候就进入了断点模式,可以查看issue面板,注意选择右边Runtime: 有很多叹号说明就有问题了.看内存中object的名字,有一

ios开发笔记----exc_bad_access(code=1, address=0x789870)野指针错误,假死debug状态

错误原因: exc_bad_access(code=1, address=0x789870)野指针错误,主要的原因是,当某个对象被完全释放,也就是retainCount,引用计数为0后.再去通过该对象去调用其它的方法就会出现野指针错误. 例如: Person *jerry = [[Person alloc]init];  //  retainCount引用计数为1 [jerry eat];  //  调用吃的方法 [jerry release];  //  释放jerry这个对象到 retain

exc_bad_access(code=1, address=0x789870)野指针错误

原因: exc_bad_access(code=1, address=0x789870)野指针错误,主要的原因是,当某个对象被完全释放,也就是retainCount,引用计数为0后.再去通过该对象去调用其它的方法就会出现野指针错误. 解决办法: 首先得定位到哪里出现的这样野指针引用错误,如果是大型的项目代码量一大,找起来是非常痛苦的. iOS提供了一个环境变量设置来帮忙定位错误位置的信息描述:NSZombieEnabled ,就是当设置NSZombieEnabled环境变量后,一个对象销毁时会被

【Objective-C】09-空指针和野指针

一.什么是空指针和野指针 1.空指针 1> 没有存储不论什么内存地址的指针就称为空指针(NULL指针) 2> 空指针就是被赋值为0的指针.在没有被详细初始化之前.其值为0. 以下两个都是空指针: 1 Student *s1 = NULL; 2 3 Student *s2 = nil; 2.野指针 "野指针"不是NULL指针,是指向"垃圾"内存(不可用内存)的指针.野指针是很危急的. 回到顶部 二.野指针和空指针样例 接下来用一个简单的样例对照一下野指针和

(转)空指针和野指针

本文目录 一.什么是空指针和野指针 二.野指针和空指针例子 一.什么是空指针和野指针 1.空指针 1> 没有存储任何内存地址的指针就称为空指针(NULL指针) 2> 空指针就是被赋值为0的指针,在没有被具体初始化之前,其值为0. 下面两个都是空指针: 1 Student *s1 = NULL; 2 3 Student *s2 = nil; 2.野指针 "野指针"不是NULL指针,是指向"垃圾"内存(不可用内存)的指针.野指针是非常危险的. 回到顶部 二.

Xcode7的发布后的crash跟踪,轻松定位崩溃代码 Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS

Xcode7中苹果为我们增加了两个重要的debug相关功能.了解之后觉得非常实用,介绍给大家. 1.Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS? EXC_BAD_ACCESS一直是很多开发者的噩梦,因为这个错误很不直观,出现后往往要花很长时间才能定位到错误.苹果这次带来了革命性的提升. 在项目的Scheme中Diagnostics下,选中enable address sanitizer(注意选中后Xcode会重新编译整个项目). 这样设置后,如果再出现类

空指针和野指针

[转自]http://www.cnblogs.com/mjios/archive/2013/04/22/3034788.html 本文目录 一.什么是空指针和野指针 二.野指针和空指针例子 说明:这个Objective-C专题,是学习iOS开发的前奏,也为了让有面向对象语言开发经验的程序员,能够快速上手Objective-C.如果你还没有编程经验,或者对Objective-C.iOS开发不感兴趣,请忽略.学习本专题之前,建议先学习C语言专题. 一.什么是空指针和野指针 1.空指针 1> 没有存储

李洪强iOS开发之【Objective-C】09-空指针和野指针

一.什么是空指针和野指针 1.空指针 1> 没有存储任何内存地址的指针就称为空指针(NULL指针) 2> 空指针就是被赋值为0的指针,在没有被具体初始化之前,其值为0. 下面两个都是空指针: 1 Student *s1 = NULL; 2 3 Student *s2 = nil; 2.野指针 "野指针"不是NULL指针,是指向"垃圾"内存(不可用内存)的指针.野指针是非常危险的. 二.野指针和空指针例子 接下来用一个简单的例子对比一下野指针和空指针的区别