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会自动输出最后的一次调用堆栈。如下:

  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命令通用):

  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的一大利器啊,很是方便!

http://blog.csdn.net/likendsl/article/details/7576549

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

  1. 手机抓包xcode自带命令行工具配合wireshark实现

    三.最佳方式:rvictl命令 优点:简单,而且可以抓所有网络接口的数据: 缺点:似乎没有,要求手机iOS5以上不算要求吧?如果说缺点,就是这个命令是Xcode的Command Line Tools ...

  2. 关于XCode 的agvtool命令行

    简介:用agvtool如何来自动更新版本号和bulid version   agvtool是一个命令行工具,允许你自动递增到下一个最高的数量或具体的数字这些数字.本文档提供了更新您的构建和版本号码使用 ...

  3. Xcode 的expression命令

    expression命令是执行一个表达式,并将表达式返回的结果输出,是LLDB调试命令中最重要的命令,也是我们常用的 p 和 po 命令的 鼻祖. 他主要有2个功能 (1) 执行表达式 举例:改变视图 ...

  4. 利用终端统计 Xcode代码数量命令

    直接利用终端命令进入工程文件夹然后写下或复制以下命令 find . -name "*.m" -or -name "*.h" -or -name "*. ...

  5. Xcode界面简介

    创建 Object-C 程序 进入主界面方式 : 打开 Xcode 之后, 可以使用 Xcode 菜单, 但是必须创建一个 Object-C 工程 或者 导入 一个 Object-C 工程才可以进入主 ...

  6. 【IOS 开发】Object-C 入门 Xcode 环境具体解释

    作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/38424965 一. Xcode 环境安装 与 project ...

  7. 【IOS 开发】Object-C 入门 Xcode 环境详解

    作者 : 韩曙亮 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/38424965 一. Xcode 环境安装 与 工程创建 1. ...

  8. lldb调试命令

    XCode4.0以后,编译器换成了LLVM 编译器 2.0 与以前相比,更加强大:1.LLVM 编译器是下一带开源的编译技术.完全支持C, Objective-C, 和 C++.2.LLVM 速度比 ...

  9. Mac OS X 中一些常用的命令行技巧

    一.网络设置相关 1.网卡的物理地址的动态重置 出于某些需求,例如网络中的 IP 地址或网络帐号与网卡物理地址绑定,使得多个设备无法切换上网,可尝试临时更改物理地址.不过,系统偏好设置是不能修改网卡物 ...

随机推荐

  1. Linux Kernel 多个本地拒绝服务漏洞

    漏洞名称: Linux Kernel 多个本地拒绝服务漏洞 CNNVD编号: CNNVD-201308-154 发布时间: 2013-08-12 更新时间: 2013-08-12 危害等级:    漏 ...

  2. C# 导出 Excel 数字列出现‘0’的解决办法

    在DataGird的中某一列全是数字并且长度大于15的字符,在导出excel时数字列第15-18位全部为0. 解决办法:在需导出数字列前加入英文字符状态的单引号(‘ ), 如: <asp:Tem ...

  3. 【狼】unity3d iTween插件的学习

    之前在一个三消游戏项目中接触到iTween,最近又要用到,发现iTween真的是一个很好用,省事的插件,有很多函数里包括 Hashtable的他都用一个函数很简单的完成了, 举几个例子 void Lo ...

  4. FZYZOJ-1144 恶魔城

    P1144 -- 恶魔城 时间限制:1000MS      内存限制:131072KB 状态:Accepted      标签:    图论-最短路   二分   无 Description 上帝需要 ...

  5. jboss as7 o.h.c.s.c.i.BroadcastGroupImpl Network is unreachable

    Question: [Server:server-one] 22:52:56,876 ERROR [org.hornetq.core.server.cluster.impl.BroadcastGrou ...

  6. [cocos2dx 3.0 + ios]如何编写iAd的plugin

    cocos2dx3.0自带的plugin包含推广,收益等各个方面的第三方插件,但是对iAd没有支持,大概是因为专属于IOS,没有单独成库的必要,不过为了统一使用广告的插件化管理,封装一个专属IOS的I ...

  7. springMVC能做什么,做j2ee时候要考虑什么

    转载: http://jinnianshilongnian.iteye.com/category/231099 [置顶] 跟我学SpringMVC目录汇总贴.PDF下载.源码下载 博客分类: 跟开涛学 ...

  8. linux mono

    linux下.net环境; rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm &am ...

  9. JavaScript 的 Date 最详细解读

    基础的 Date() 就不说了~ :  ) 如何获得某个月的天数? 不知道大家遇到过这个问题吗?我想如果你们写过日期组件一定有这个问题,我当时的解决方案是这样的: 以下的三个方法,month 参数我都 ...

  10. list去除重复

    1. [代码][Python]代码 简单去重      ? 1 2 3 4 5 l = [1,2,3,3] l = list(set(l))   >>>l >>>[ ...