转自http://www.apkbus.com/android-140340-1-1.html

这篇文章给大家带来的是一些Xcode实用技巧,比如:

• 摆脱NSlog打印输出,使用断点日志。

• 摆脱TODOs注释来进行编译警告。

• 使用条件表达式来进行断点。

• 使用LLDB动态修改数据。

• 等等。

• 设置调试控制台

可以通过cmd+shift+Y组合键或按如下方式调出控制台

可以根据习惯,在Xcode\Preferences设置控制台输出环境,一般设置为控制台+变量视图显示。

• 添加异常断点

通过cmd+6或如下方式进入断点导航栏。

点击+添加异常断点

下面是断点编辑界面,异常断点的类型有Object C和C++2种,一般情况下选择All,当你的代码中有C++代码时,如果你只是定位Object C代码问题,建议选择Object C,如果你选择All,在调度过程中可能会在很多C++的代码处停住,但相关代码其实并没有错误(笔者现在的项目中碰到了此类问题)。

断点行为(Action),这个提供了非常强大的功能,能够在抛出异常的时候,执行Apple脚本,Debugger命令,log打印,执行Shell脚本,还可以播放声音等等。

Automatically continue after evaluating选项可以使项目运行到断点时,不进入暂停状态,常用于断点打印信息(后面会讲到)。

一般使用异常断点,是为了定位抛出异常的代码位置,帮助快速解决Bug。

PS:可以在LLDB中输入bt命令,控制台会列出相关的函数栈Crash信息(LLDB相关使用方法,后面会讲到)。

• 运行时修改变量的值

相关LLDB命令:

在下面例子中,断点处,在LLDB中利用expr命令修改相关变量的值。
(关于expr命令需要说明的是需要知道明确的返回类型,即使返回类型为void,例如expr (void)NSLog(@"test"))

下面我们用断点来完成相同的功能。先编辑断点(或cmd+option,点击断点),执行相关Debugger命令。

执行输出结果如下,用断点,完成了相同的功能,变量值在运行是被改变了。

• 触发条件断点

这是一个很有用的技巧,可以检测程序是束运行在正确的轨道上,条件生效时,进入调度模式,使用方式类似于断言语句(Assert) 。

程序运行,进入断点并执行Action。

ps:使用条件断点时,Automatically continue after evaluating复选框不要勾上,否则断点永远不会生效。

• 符号断点

也是一个非常有用的调试技巧,程序会在遇到特殊符号时进入调试模式,符号可以是一个方法名、类中的一个方法、或者任意C方法(objc_msgSend)。

PS:通常用于观察你需要关注的方法,比如:-[NSException raise],malloc_error_break,-[NSObject doesNotRecognizeSelector:]等,可以快速帮你定义EXC_BAD_ACCESS等异常问题。

应用启动后,进入调试模式,并执行Action。

• 一些注释符号的使用

1、#warning add warning info,使用warning后,编译会产生警告,加在临时修改代码的地方,可以有效的防止错误提交代码等,特别是发布版本的时候,保证无任何编译警告,可以有效的降低风险。

2、#error add error warning info,error的使用更加严格,会让你的代码不能通过编译,适合忽略编译警告的人使用。

3、// TODO:这里还没有写完 优先级:1,TODO不会有编译问题,它会显示在跳转栏里(是不是很醒目),这个可以用来保留任务列表和评论,很实用。

(转)Xcode调试技巧的更多相关文章

  1. Xcode 调试技巧 --常用命令和断点

    Xcode 中的调试技巧与我们的日常开发息息相关,而这些调试技巧在我们解决Bug时,常常有事半功倍的作用,经常会用到的有各种断点 和 命令.而这些调试技巧也经常会在面试中问到,所以不知道的就来看看吧. ...

  2. xcode调试技巧

    xode报错有时挺无厘头,完全不知道哪里出的问题,最后还得用排除法,记录一些工作中认为有用的调试技巧 1.左侧视图点断点视图,左下角点加号,选择exception breakpoint,类型选c++, ...

  3. Xcode 调试技巧-b

    随着Xcode 5的发布,LLDB调试器已经取代了GDB,成为了Xcode工程中默认的调试器.它与LLVM编译器一起,带给我们更丰富的流程控制和数据检测的调试功能.LLDB为Xcode提供了底层调试环 ...

  4. Xcode 调试技巧

    一 NSLog调试 官方文档:Logs an error message to the Apple System Log facility. 即NSLog不是作为普通的debug log的,而是err ...

  5. iOS Xcode 调试技巧

    一 NSLog调试 官方文档:Logs an error message to the Apple System Log facility. 即NSLog不是作为普通的debug log的,而是err ...

  6. Xcode调试技巧(断点和重构)

    首先是最简单的普通断点有时候不知道是那个方法调用的崩溃的这个方法,传了个奇怪的值,打个断点就就可以在左侧工具栏里看到最近几个方法执行的循序,和那个方法调用的本方法,一般小问题在这里就可以解决啦~ 条件 ...

  7. iOS Xcode 调试技巧 全局断点这样加才有意思

    http://blog.sina.com.cn/s/blog_876a2c9901016ezh.html

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

    转载自:iOS开发之Xcode常用调试技巧总结 最近在面试,面试过程中问到了一些Xcode常用的调试技巧问题.平常开发过程中用的还挺顺手的,但你要突然让我说,确实一脸懵逼.Debug的技巧很多,比如最 ...

  9. Xcode 常用调试技巧总结

    NSLog,po命令和普通断点调试相信每个iOS开发者都会,这里就不作介绍了. 一.Memory Graph Xcode8新增:Memory Graph解决闭包引用循环问题 有很多叹号说明就有问题了. ...

随机推荐

  1. 经纬度距离计算Java实现代码

    public class test { private static double rad(double d) { return d * Math.PI / 180.0; } public stati ...

  2. “mybatis 中使用foreach 传

    为了帮助网友解决“mybatis 中使用foreach 传”相关的问题,中国学网通过互联网对“mybatis 中使用foreach 传”相关的解决方案进行了整理,用户详细问题包括:mybatismap ...

  3. verilog阻塞与非阻塞的初步理解(二)

    将阻塞模块改为下述代码: module blocking(clk,a,b,c); :] a; input clk; :] b,c; :] b,c; always @(posedge clk) begi ...

  4. Apache中,同一IP使用多域名对应多个网站的方法

    首先dns中确定有相应的A记录, abc  IN A   211.154.2.5 mail IN A   211.154.2.5 这个讲的是在windows下面配置apache虚拟主机: 一.配置虚拟 ...

  5. 黄学长模拟day1 某种密码

    关于某种密码有如下描述:某种密码的原文A是由N个数字组成,而密文B是一个长度为N的01数串,原文和密文的关联在于一个钥匙码KEY.若KEY=∑▒[Ai*Bi],则密文就是原文的一组合法密码. 现在有原 ...

  6. LYDSY模拟赛day3 平均数

    [ 问题描述]有一天, 小 A 得到了一个长度为 n 的序列.他把这个序列的所有连续子序列都列了出来, 并对每一个子序列都求了其平均值, 然后他把这些平均值写在纸上, 并对它们进行排序,最后他报出了第 ...

  7. NHibernate概念

    SessionFactory (NHibernate.ISessionFactory) 对属于单一数据库的编译过的映射文件的一个线程安全的,不可变的缓存快照.它是Session的工厂,是Connect ...

  8. Stm32 debug停留在"BKPT 0xAB"或者"SWI 0xAB"的解决办法。

    一..背景: 曾经在工作中接触过STM32一段时间,但没有深入的去学习,只是用前辈搭建好的模型来实现一些功能罢了,俗话说的好,大树底下好乘凉,开发确实轻松了,可是不深究点,又觉着心里不踏实,然而也一直 ...

  9. CentOS编译安装Apache 2.4.x时报错:configure: error: Bundled APR requested but not found at ./srclib/. Download and unpack the corresponding apr and apr-util packages to ./srclib/.

    先前按照这篇文章“CentOS6.x编译安装LAMP(2):编译安装 Apache2.2.22”去编译安装Apache2.2.x版本时,安装得挺顺利,今天换成Apache2.4.x版本,安装方法一样, ...

  10. ubutu安装搜狗

    1.下载deb文件 下载32位 wget "http://pinyin.sogou.com/linux/download.php?f=linux&bit=32" -O &q ...