IOS调试技巧

资料:http://www.cnblogs.com/daiweilai/p/4421340.html#undefined

一、断点

基本操作:添加 、移除、监视(Watch)某个变量。

普通断点

Edit Breakpoint

1、Condition

这里可以输入条件表达式,满足条件的时候断点就会生效。

2、Ingore

在这里可以设置忽略断点次数。

3、Action

Action有6中类型

常用的就是Log MessageDebugger Command

  • Log Message:%B会打印断点的名字,%H会打印断点的调用次数,@@中间可以输入表达式
  • Debugger Command:po(打印对象信息),bt(打印函数栈),expression(表达式)。
  • 勾选Automatically continue after evaluating actions之后程序会在断点产生后继续运行。可以输入调试信息至于不暂停程序。(?)

全局断点(Exception Breakpoint)

定位 main 里边的 EXEC_BAD_ACCESS:问题。

OpenGL ES的断点调试(OpenGL ES Error Breakpoint)

符号断点(Symbolic Breakpoint)

当程序运行到特定符号的时候就会产生断点。通过这种方式添加断点,就不需要在源文件中添加,也不需要知道断点设置在文件的第几行。

比普通断点多了两个属性Symbol和Module。

1. 方法名称:会对所有具有此方法名称的类方法生效。例如 initWithFrame: 。

2. 特定类的方法:OC类和C++类都适用,例如 ,[UIView initWithFrame:]或者 Shap::draw()。

3. 函数名称。例如普通C函数。

Test Failure Breakpoint

二、打印

#define NSLog(format, ...) do { \
fprintf(stderr, "<%s : %d> %s\n", [[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, __func__); (NSLog)((format), ##__VA_ARGS__); fprintf(stderr, "-------\n"); } while (0)

三、Console(lldb)控制台命令

资料:http://objccn.io/issue-19-2/

常用调试命令

help --帮助

print --打印

expression —改变程序内的值

po

// p 和 e 来代替 print 和 expression

LLDB 无法确定涉及的类型 (译者注:返回的类型)

//  p (char)[[$array objectAtIndex:$a] characterAtIndex:0]

// p/d (char)[[$array objectAtIndex:$a] characterAtIndex:0]

时间: 2024-10-24 02:42:47

IOS调试技巧的相关文章

IOS调试技巧:当程序崩溃的时候怎么办 iphone IOS

转载:http://article.ityran.com/archives/1143 有这样一种情形:当我们正在快乐的致力于我们的app时,并且什么看都是无比顺利,但是突然,坑爹啊,它崩溃了.(悲伤地音乐响起) 我们需要做的第一件事就是:不要惊慌. 修复崩溃不是很困难的.假如你崩溃了,并且胡乱的改些东西,而且还在不停的念着咒语希望bug神奇的自动消失,你大多数情况下都会使情况更麻烦.相反的,你需要知道一些系统的方法,并且学习怎么找到崩溃和他的原因. 第一件需要知道的就是在你的代码中准确的找到cr

iOS 调试技巧

1. 什么是LLDB? LLDB,底层调试器,在xcode的Debug区域,能看到蓝色的小字 (lldb) 2. 什么dsYM文件? dsYM是调试信息文件,因为后缀名.dsYM,所以叫sdYM文件,创建新工程时,默认就会创建dsYM文件,Build Setting里有相应的设置 3. 什么是符号化? 程序运行时,是将源代码转成机器码运行的,程序一旦崩溃,所能收集到的崩溃信息,无非是一些内存地址,十六进制码,必须转成方法名或变量名,才能看懂崩溃信息,这个转换的过程称为符号化,符号化依据dsYM文

iOS调试技巧之打印输出 -----A: (NSString *)description B:自定义LOG C:使用第三方插件快速打印

A:重写- (NSString *)description函数 如果有一个Product 产品对象  Product.h中 1 #import <Foundation/Foundation.h> 2 3 typedef enum : NSUInteger { 4 RED = 1, 5 GREEN, 6 } ProductColor; 7 8 @interface Product : NSObject 9 10 @property (nonatomic, assign) ProductColor

iOS各种调试技巧豪华套餐

转载自http://www.cnblogs.com/daiweilai/p/4421340.html 目录 前言 逼优鸡 知己知彼 百战不殆 抽刀断Bug 普通操作 全局断点(Global BreakPoint) 条件断点(Condational Breakpoints) 打印的艺术 NSLog 开启僵尸对象(Enable NSZombie Objects) 进击的码农 Console(lldb 命令) Profile(instruments) Xcode视图调试 结语 前言 最近博主临近毕业季

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

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

iOS开发调试技巧总结(持续更新中)

作者:乞力马扎罗的雪  原文 对于软件开发而言,调试是必须学会的技能,重要性不言而喻.对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中.不同语言.不同IDE.不同平台的调试,有同性也有个性.今天我们就来学习一下iOS开发中的调试技巧,语言暂用为OC,IDE当然是强大的Xcode.首先说明下,Xcode已经为我们调试项目提供了极大的方便. [1.普通断点] 断点(Breakpoint)绝对是调试程序的第一大选择,也是掌握的基础技能.顾名

iOS SDK:iOS调试的技巧

iOS SDK:iOS调试的技巧 为什么你的数组包含3个项目而不是5个?为什么你的游戏运行缓慢?这些都跟调试有关,调试是开发过程中必不可少的一部分.本文所列举了一些重要的调试功能(当然并不全面)可以帮你用更少的时间来解决bug问题. 本文内容主要包括3个方面: 使用console检查app状态 进行日志记录,并熟练的驾驭NSLog 使用对象的生命周期来跟踪内存的使用. 使用Console检查app状态 Xcode底部的小黑盒是我们调试时的好朋友,它可以输出日志信息.错误信息以及其他有用的东西来帮

ios autolayout debug调试技巧

这篇文章并没有具体介绍自动布局的一些基本概念,主要讲解了一些高级的调试技巧. 这篇文章不是用来介绍Auto Layout的.如果你还没用过它,那还是先去WWDC 2012看看基础教程吧(1,2,3). 如果我们在iOS中遇到不可满足的约束条件,我们只能在输出的日志中看到视图的内存地址.尤其是在更复杂的布局中,有时很难辨别出视图的哪一部分出了问题.然而,在这种情况下,还有几种方法可以帮到我们. 首先,当你在不可满足的约束条件错误信息中看到NSLayoutResizingMaskConstraint

iOS开发——调试篇&amp;Xcode常用调试技巧

Xcode常用调试技巧 Enable NSZombie Objects(开启僵尸对象) Enable NSZombie Objects可能是整个Xcode开发环境中最有用的调试技巧.这个技巧非常非常容易追踪到重复释放的问题.该技巧会以非常简洁的方式打印指出重复释放的类和该类的内存地址. 怎么开启僵尸对象呢?首先打开“Edit Scheme”(或者通过热键?<),然后选择Diagnostics选项卡,勾选Enable NSZombie Objects选项. 现在我们可以关掉ARC来测试重复释放的问