iOS 开发常用的调试命令

XCode4.0以后,编译器是LLVM,控制台调试命令前缀是lldb

第一、LLVM简介

LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。

第二、 对关注编译技术的开发人员,LLVM提供了很多优点:

 

现代化的设计
LLVM的设计是高度模块化的,使得其代码更为清晰和便于排查问题所在。
语言无关的中间代码
一方面,这使得透过LLVM能够将不同的语言相互连结起来;也使得LLVM能够紧密地与IDE交互和集成。
另一方面,发布中间代码而非目标代码能够在目标系统上更好地发挥其潜能而又不伤害可调试性(i.e. 在目标系统上针对本机的硬件环境产生目标代码,但又能够直接通过中间代码来进行行级调试)
作为工具和函数库
使用LLVM提供的工具可以比较容易地实现新的编程语言的优化编译器或VM,或为现有的编程语言引入一些更好的优化/调试特性。
第三、使用前提:

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

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

符合以上两个条件之后,控制台(即日志输出窗口All Output)会自动打出一个(lldb)命令,此时你就可以进行调试。

第四、常用的调试命令

 

po

 

po是print-object的简写,可用来打印所有NSObject对象。sample code:

 

(lldb) po self.view

<UITableView: 0xdb00200; frame = (0 20; 320 460); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x8b3ca50>; layer = <CALayer: 0x8b3c110>; contentOffset: {0, 0}>

(lldb) po self

<RootViewController: 0x9813e90>

 

 

p

 

p是print的简写,可以用来打印所有的简单类型,如int, float,结构体等。sample code:

 

 

  1. ItemData item;  
  2.         item.nMainID=1;  
  3.         item.nSubID=2;  
  4.         item.pszTitle=@"hello";  
  5.       
  6.         NSRect rect=NSMakeRect(0, 10, 10, 10);  

   调试命令及输出结果:

 

 

(lldb) print rect

(NSRect) $0 = (x=0, y=10), (width=10, height=10)

(lldb) p item

(ItemData) $3 = {

  pszTitle = 0x0000000100001370 @"hello"

  nMainID = 1

  nSubID = 2

}

call

call即是调用的意思。其实上述的po和p也有调用的功能。因此一般只在不需要显示输出,或是方法无返回值时使用call

bt

这时Xcode会自动输出最后的一次调用堆栈

 

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

 

 

[cpp] view plaincopy
 
命令                        解释  
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                  查看变理的数据类型 
 

iOS 开发常用的调试命令,,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。