原文地址: 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会自动输出最后的一次调用堆栈。如下:
其实说实话这个 真的挺难找的 我自己在百度上搜了半天的 Xcode命令行指令 但是出来的都不是我想要的结果 ,今天突然就看到一个关于这个的博客,看了之后 我也将指令 在命令行里面敲了 试试 。确实很有用! 但是 还有很多更厉害的功能我还没有研究出来 ,慢慢发现 ,慢慢更新把~~
还有一些其他的指令 ::::(和gdb命令通用的)
- 命令 解释
- break NUM 在指定的行上设置断点。
- bt 显示所有的调用栈帧。该命令可用来显示函数的调用顺序。
- clear 删除设置在特定源文件、特定行上的断点。其用法为:clear FILENAME:NUM。
- continue 继续执行正在调试的程序。该命令用在程序由于处理信号或断点而导致停止运行时。
- display EXPR 每次程序停止后显示表达式的值。表达式由程序定义的变量组成。
- file FILE 装载指定的可执行文件进行调试。
- help NAME 显示指定命令的帮助信息。
- info break 显示当前断点清单,包括到达断点处的次数等。
- info files 显示被调试文件的详细信息。
- info func 显示所有的函数名称。
- info local 显示当函数中的局部变量信息。
- info prog 显示被调试程序的执行状态。
- info var 显示所有的全局和静态变量名称。
- kill 终止正被调试的程序。
- list 显示源代码段。
- make 在不退出 gdb 的情况下运行 make 工具。
- next 在不单步执行进入其他函数的情况下,向前执行一行源代码。
- print EXPR 显示表达式 EXPR 的值。
- print-object 打印一个对象
- print (int) name 打印一个类型
- print-object [artist description] 调用一个函数
- set artist = @"test" 设置变量值
- whatis 查看变理的数据类型
如果能将这个运用的熟练的话 ,那么你的层次就会上升另一个档次,在找bug方面 解决EXC_BAD_ACCESS错误的一种方法--NSZombieEnabled一起使用,实在是查找crash的一大利器啊,很是方便!!
最后给打击推荐几个 网站
- CocoaDev,个人觉得讲Cocoa技术十分专业的网站之一,下面的链接详细讲了讲NSZombieEnable的原理。http://www.cocoadev.com/index.pl?NSZombieEnabled
- 苹果官方的Mac OS X Debugging Magic,详细讲述了最为一个高级苹果程序员应该具备的调试技巧 http://developer.apple.com/library/mac/#technotes/tn2004/tn2124.html
- 其实还可以在Instruments中开启NSZombie选项,这样就可以在Instruments中直接查看crash时候的callstack了:http://www.markj.net/iphone-memory-debug-nszombie/