Xcode的控制台调试命令

简介: 转载自:  http://blog.csdn.net/likendsl/article/details/7576549 XCode4.0以后,编译器换成了LLVM 编译器 2.0 与以前相比,更加强大: 1.LLVM 编译器是下一带开源的编译技术.完全支持C, Objective-C, 和 C++. 2.LLVM 速度比 GCC快两倍,建立的程序也会运行的更快.

转载自:  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。

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
目录
相关文章
|
5月前
|
Linux Shell PHP
linux(十五)文件和目录相关命令-控制台输出命令echo和重定向
linux(十五)文件和目录相关命令-控制台输出命令echo和重定向
60 0
|
6月前
|
JavaScript
Sublime Text3 直接运行js调试控制台
Sublime Text3 直接运行js调试控制台
|
7月前
|
Web App开发 开发者
利用chrome控制台调试post请求
利用chrome控制台调试post请求
164 0
|
Web App开发 JavaScript iOS开发
Xcode9用Safari调试模拟器JS代码显示“无可检查的应用程序”的原因
Xcode9用Safari调试模拟器JS代码显示“无可检查的应用程序”的原因
903 0
|
1天前
|
JavaScript 前端开发 开发者
JavaScript基础入门之浏览器控制台调试输出
本文章是对小白学习js的初级教程,也是我对自己学习经验的一种总结,文章大多采用使用案例加讲解,带动学习的方式.因为我们的天性总是喜欢有及时反馈的事物,但是学习是一个慢长的事情,而有结果的回应,才会更好的促进自己去学习,主要是对于javascript学习中的输出,有个大体上的了解,同时通过教学能够更好的使用浏览器来方便我们去学习和运行代码,也是对自己进行笔记整理,对抓住信息关键点的一种提高.
10 0
|
2月前
|
编解码 Linux Shell
【Shell 命令集合 系统设置 】Linux 设置Linux系统的控制台参数和属性setconsole命令 使用指南
【Shell 命令集合 系统设置 】Linux 设置Linux系统的控制台参数和属性setconsole命令 使用指南
35 0
|
3月前
|
网络安全 数据库 Windows
Metasploit6.0系列教程 -- MSF控制台命令
Metasploit6.0系列教程 -- MSF控制台命令
21 1
|
6月前
|
iOS开发
[√]xcode无线调试
[√]xcode无线调试
27 0
|
8月前
|
Linux 开发工具 数据安全/隐私保护
Linux基础操作2(常用基础命令,控制台操作)
Linux基础操作2(常用基础命令,控制台操作)
61 0
Linux基础操作2(常用基础命令,控制台操作)
|
网络安全 数据库 Windows
Metasploit6.0系列教程 -- MSF控制台命令
Metasploit6.0系列教程 -- MSF控制台命令
127 0
Metasploit6.0系列教程 -- MSF控制台命令