xcode debug 2

原创 2015年07月09日 21:05:25

中相关的调度技巧均在Xcode4.5+环境中完成。

初学者调试技巧推荐联接:

http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1

http://www.raywenderlich.com/10505/my-app-crashed-now-what-part-2

 

这篇文章给大家带来的是一些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 DEBUG 技巧

转自:http://www.cnblogs.com/SnowStark/p/5805979.html 抽刀断Bug 断点,(我求你们不要想到张敬轩,阿轩他容易么,小受又怎么了?你们这帮...
  • jeromexiong
  • jeromexiong
  • 2017年07月25日 14:59
  • 625

xcode发布时选择debug或release模式

1:首先选择Product->Scheme->Edit Scheme 2: 接下来就可以选择发包类型了~
  • u013993254
  • u013993254
  • 2016年12月16日 17:56
  • 795

使用Xcode-debug模式和release模式

在开发过程中,我们经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程。但是一个发布的程序,里面带有太多的NSLog输...
  • Jerome_XX
  • Jerome_XX
  • 2015年03月19日 00:23
  • 8073

iOS开发技巧(使用Xcode DEBUG模式和RELEASE模式)

在开发过程中,我们经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程。但是一个发布的程序,里面带有太多的NSLog输...
  • haiooh
  • haiooh
  • 2016年05月09日 10:41
  • 6202

Xcode Debug调试

Xcode编译很快,这相对于VS来说是一大优势,dan's
  • tyxkzzf
  • tyxkzzf
  • 2014年04月23日 09:54
  • 6474

Xcode DEBUG模式和RELEASE模式使用总结

在开发过程中,我们经常需要用到NSLog输出一些信息,甚至有的开发过程,必须在控制台查看输出,有经验的程序员通过控制台输出就能知道整个数据交互的一个流程。但是一个发布的程序,里面带有太多的NSLog输...
  • sunnyboy9
  • sunnyboy9
  • 2016年04月12日 09:55
  • 913

这些年被我们玩坏的Xcode -- Xcode debug area 的 debugger command 使用

Xcode debug area 要这么玩才对~~
  • wliu6
  • wliu6
  • 2015年04月24日 17:44
  • 965

最大化 Xcode Debug Console 窗口

转自:http://fann.im/blog/2012/03/23/maximize-xcode-debug-console-window/ 很酷的小技巧: 参考 How to get b...
  • wanderman1836
  • wanderman1836
  • 2017年04月16日 21:19
  • 443

iOS开发-Xcode debug,release的区别

Xcode进行调试时候,经常看到debug和release,那么他们是什么呢? debug是调试版本, release是发行版本, Xcode里面,但凡有debug和release 设置的地方,就...
  • qq_26968709
  • qq_26968709
  • 2016年04月18日 18:21
  • 832

iOS开发-Xcode Debug、Release、Archive、Profile、Analyze概念解释

1,Debug和Release版本区别?
  • mad1989
  • mad1989
  • 2014年10月31日 18:41
  • 49716
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:xcode debug 2
举报原因:
原因补充:

(最多只允许输入30个字)