Xcode的控制台调试命令

转载自:  http://blog.csdn.net/likendsl/article/details/7576549

XCode4.0以后,编译器换成了LLVM 编译器 2.0

与以前相比,更加强大:
1.LLVM 编译器是下一带开源的编译技术.完全支持C, Objective-C, 和 C++.
2.LLVM 速度比 GCC快两倍,建立的程序也会运行的更快. 因为它更好的利用现代的芯片的结构.
3.LLVM和Xcode 4完全的整合在一起.包括关键字高亮,代码完整性等全都是由LLVM语法分析器来分析的. 这样可以在编辑的时候就可以很好的了解你的代码.

编译器进化之后,控制台调试命令前缀,也由原来的gdb更改成了lldb,所以当你看到控制台没有gdb而出现lldb的时候,不用惊慌,因为我们以前常用的调试命令依然可以使用:

使用前提:

1.既然是调试命令,理所当然的,程序模式应该选择Debug模式。

2.在Debug模式下,如果你的程序在运行中崩溃(Crash)掉,那么恭喜你,使用lldb调试的机会来了。

符合以上两个条件之后,控制台(即日志输出窗口All Output)会自动打出一个(lldb)命令,你在其后输入bt,回车。

恭喜你,这时Xcode会自动输出最后的一次调用堆栈。如下:

[cpp] view
plain
copy

  1. * thread #1: tid = 0x1f03, 0x0132edee CoreFoundation`___forwarding___ + 206, stop reason = EXC_BREAKPOINT (code=EXC_I386_BPT, subcode=0x0)  
  2.     frame #0: 0x0132edee CoreFoundation`___forwarding___ + 206  
  3.     frame #1: 0x0132ecb2 CoreFoundation`_CF_forwarding_prep_0 + 50  
  4.     frame #2: 0x00002e60 testMVC`-[ViewCtrl2 touchesBegan:withEvent:] + 128 at ViewCtrl2.m:40  
  5.     frame #3: 0x013c9e99 CoreFoundation`-[NSObject performSelector:withObject:withObject:] + 73  
  6.     frame #4: 0x000ffc49 UIKit`forwardTouchMethod + 268  
  7.     frame #5: 0x000ffb38 UIKit`-[UIResponder touchesBegan:withEvent:] + 30  
  8.     frame #6: 0x0003a2cf UIKit`-[UIWindow _sendTouchesForEvent:] + 272  
  9.     frame #7: 0x0003a5e6 UIKit`-[UIWindow sendEvent:] + 273  
  10.     frame #8: 0x00020dc4 UIKit`-[UIApplication sendEvent:] + 464  
  11.     frame #9: 0x00014634 UIKit`_UIApplicationHandleEvent + 8196  
  12.     frame #10: 0x012b2ef5 GraphicsServices`PurpleEventCallback + 1274  
  13.     frame #11: 0x0139c195 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 53  
  14.     frame #12: 0x01300ff2 CoreFoundation`__CFRunLoopDoSource1 + 146  
  15.     frame #13: 0x012ff8da CoreFoundation`__CFRunLoopRun + 2218  
  16.     frame #14: 0x012fed84 CoreFoundation`CFRunLoopRunSpecific + 212  
  17.     frame #15: 0x012fec9b CoreFoundation`CFRunLoopRunInMode + 123  
  18.     frame #16: 0x012b17d8 GraphicsServices`GSEventRunModal + 190  
  19.     frame #17: 0x012b188a GraphicsServices`GSEventRun + 103  
  20.     frame #18: 0x00012626 UIKit`UIApplicationMain + 1163  
  21.     frame #19: 0x000026fa testMVC`main + 170 at main.m:16  
  22.     frame #20: 0x00002645 testMVC`start + 53  

当然还有其他的命令(和gdb命令通用):

[cpp] view
plain
copy

  1. 命令                        解释    
  2. break NUM               在指定的行上设置断点。    
  3. bt                      显示所有的调用栈帧。该命令可用来显示函数的调用顺序。    
  4. clear                   删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM。    
  5. continue                继续执行正在调试的程序。该命令用在程序由于处理信号或断点而导致停止运行时。    
  6. display EXPR            每次程序停止后显示表达式的值。表达式由程序定义的变量组成。    
  7. file FILE               装载指定的可执行文件进行调试。    
  8. help NAME               显示指定命令的帮助信息。    
  9. info break              显示当前断点清单,包括到达断点处的次数等。    
  10. info files              显示被调试文件的详细信息。    
  11. info func               显示所有的函数名称。    
  12. info local              显示当函数中的局部变量信息。    
  13. info prog               显示被调试程序的执行状态。    
  14. info var                显示所有的全局和静态变量名称。    
  15. kill                    终止正被调试的程序。    
  16. list                    显示源代码段。    
  17. make                    在不退出 gdb 的情况下运行 make 工具。    
  18. next                    在不单步执行进入其他函数的情况下,向前执行一行源代码。    
  19. print EXPR              显示表达式 EXPR 的值。     
  20. print-object            打印一个对象    
  21. print (int) name      打印一个类型    
  22. print-object [artist description]   调用一个函数    
  23. set artist = @"test"    设置变量值    
  24. whatis                  查看变理的数据类型   

使用lldb调试工具,结合上文解决EXC_BAD_ACCESS错误的一种方法--NSZombieEnabled 一起使用,实在是查找crash的一大利器啊,很是方便!

欢迎喜欢交流和热心的iphone开发朋友加入qq群参与讨论:186739796,验证码:csdn。

时间: 2024-10-29 23:50:20

Xcode的控制台调试命令的相关文章

IOS Xcode调试常用命令和断点整理_IOS

IOS Xcode调试常用命令和断点 Xcode 中的调试技巧与我们的日常开发息息相关,而这些调试技巧在我们解决Bug时,常常有事半功倍的作用,经常会用到的有各种断点 和 命令.而这些调试技巧也经常会在面试中问到,所以不知道的就来看看吧. 调试命令 在上图中,右侧绿色区域就是Log 输出区,在 Log 输出区可以使用一些命令,来辅助调试. 那有哪些调试命令呢? 想要看所有的调试命令,可以在上图的右侧区域输入help,就会列出所有的调试命令. 本文就介绍几个使用频率比较高的,其他就查看后,自行了解

XCode Debug

引言: 程序调试技巧在开发过程中起着举足轻重的地位,熟练的使用可以加快我们捕捉问题的速度. 毕竟BUG这个词是我们程序员一直要伴随的字眼,最关键的,人不是计算机,总有那么一点点小细节容易在我们慎密的思绪中偷偷溜走,从而导致一个BUG的出现.那么本文就是为了介绍关于在开发iOS程序时有哪些好用的技巧辅助我们迅速的找到错误. 参考资料: 1:Xcode的控制台调试命令 http://blog.csdn.net/likendsl/article/details/7576549 使用: NSLog: 通

使用Pyomo解决复杂的问题

简介 建模是一种解决复杂问题的强大方法.依据图书 Modeling Languages in Mathematical Optimization(参 阅 参考资料)的叙述,模型用于: 解释现象 进行预测 评估关键因素 识别极限 分析折衷方法 在 业界,Microsoft Excel 等电子表格软件常常是建模问题的首要选择.现在,电子表格通常非常直观,但它们在解决大型问 题上存在着局限性.如果您是开发人员,那么您可能会发现编写脚本来解决建模问题会更有效,因为您可以轻松地将脚本集 成到其他系统中.本

iOS开发:如何减小应用程序的大小

  Q: 怎样才能让我的程序安装包小一点,让程序的下载和安装更快速? A: 本文收集了一些减小程序安装包大小的相关技巧(当第一次下载和安装程序时).如果是针对升级程序的话,可以看这篇文章(减小iOS应用程序升级时所需下载的大小)(这与第一次安装使用的工作原理有所不同). 开发:如何减小应用程序的大小-"> 检查应用程序 首先是检查.app bundle,看一下程序包里面哪些文件占的空间最大. 在做任何相关优化之前,我们需要做一些权衡.通过权衡,可以知道把优化的重点集中在什么地方.本文提到的

OC第二天—封装

/.锁定头文件的方法 1. 打开终端 2. 进入到Xcode的目录, 命令:   cd /Applications/Xcode.app 3. 把系统头文件修改为只读, 命令:   sudo chown -hR root:wheel Contentss 4. 好处:防止误删,误改头文件! __________________________________________________________________ 2.封装    封装的目的:就是为了达到高内聚低耦合:    内聚:模块内部各

Python中的线性优化通过编写脚本来解决建模问题

本系列文章将展示如何利用 Pyomo 的能力集成 Python 来建模优化应用程序.本系列的第一篇文章将介绍http://www.aliyun.com/zixun/aggregation/22929.html">基础知识.第 2 部分将介绍如何添加更多工具和构建一种可伸缩的架构.第 3 部分将提供一些使用 IPython 和 pandas 进行投资分析和统计分析的实用示例. 建模是一种解决复杂问题的强大方法.依据图书 Modeling Languages in Mathematical O

Mac OS X系统安装PHP扩展支持方法

安装PHP扩展要求你的Mac系统已经安装了Xcode环境和命令行开发工具,如果还没安装,请先使用Shell安装.   xcode-select --install 为了扩展管理方便,首先来安装pecl扩展管理器. cd /usr/lib/php sudo php install-pear-nozlib.phar 安装Redis.Memcache.Mongo等扩展.   sudo pecl install redis sudo pecl install memcache sudo pecl ins

Mac Yosemite下安装Apache+PHP+MySQL+Memcached环境笔记

为了安装方便,需要注意几个小细节. 最好是安装了xcode之后再来安装此环境 Mac OS X 10.10 Yosemite 自带PHP5.5和Apache2.4做相应修改即可. Mac先安装所需工具 MacPort的下载:http://www.macports.org/ 下载安装port ,如果开有终端,记得安装完成后退出终端哟 安装GNU autotools: 要安装autotools需要如下几个文件 automake autoconf M4 安装顺序是M4 -> autoconf ->

Mac OS X安装PHP扩展支持的教程

mac os x 默认已经安装了php,但是开发系统中的一些常用的PHP扩展库是没有的,需要自己手动安装,现在记录一下这个,以备查询. 安装PHP扩展要求你的Mac系统已经安装了Xcode环境和命令行开发工具,如果还没安装,请先使用Shell安装 xcode-select --install 为了扩展管理方便,首先来安装pecl扩展管理器.  cd /usr/lib/php sudo php install-pear-nozlib.phar 安装Redis.Memcache.Mongo等扩展.