br命令:设置各种类型断点
列出断点列表
br l
删除断点(2是断点id)
br delete 2
enable断点
br e 2
disable断点
br di 2
设置断点(30是行数)
b ViewController.m:30
设置symbolic断点
br set -n viewDidLoad
设置条件断点
br mod -c "totalValue > 3000" 2
删除条件断点
br mod -c "" 2
在某一个断点处执行多个命令
br com add 2
> bt
> continue
> DONE
继续执行
continue
c
单步执行
n
单步进入
s
退出当前函数
finish
expr命令:可以不用修改代码即可以在程序运行时修改程序数据和行为
expo self.view.hidden = YES
expr -L — 5+5
expr (void)NSLog(@“hello world")
expr -- (CGRect)[self.view frame]
expr int $debugVar = 5
expr NSString *$debugString = @"ezio cham"
expr NSData *$data = [$jsonString dataUsingEncoding: 4] //lldb不认识enum,需要传具体的值
backtrace命令
bt
bt all
thread命令:在排查多线程问题时会用到
thread backtrace
thread backtrace all
显示thread列表
thread list
选择id为1的thread
thread select 1
使用thread命令完成断点功能(100是行号)
thread until 100
修改方法返回值(在代码中的return语句所在行执行)
thread return @"new result"
example:
thread until 63(63行是当前方法的return语句所在行)
thread return YES
frame命令
查看当前frame的变量列表
frame variable
查看当前frame 名为varName的变量的值
frame variable varName
frame info
选择id为2的frame
frame select 2
选择当前frame的下一个frame
frame select -relative -1
watchpoint
查看当前watchpoint列表
watchpoint list
watchpoint delete 1
watchpoint set variable varName
可以watch expression(my_pointer为expression的返回值)
watchpoint set expression — my_pointer
设置watchpoint的条件
watchpoint modify -c “_x > 0” 1
删除条件
watchpoint modify -c “” 1
script命令
查看lldb使用的python版本
script print(sys.version)
进入lldb的python环境
script
使用python脚本
breakpoint command add -s python 1
使用python 函数my_script.breakpoint_func
breakpoint command add -F my_script.breakpoint_func 1
command命令
引入python脚本并指定新command命令:cmd_name
command script import “~/my_script.py"
command script add -f my_script.python_function cmd_name
引入python脚本并设置在断点中使用
command script import “~/my_script.py"
breakpoint command add -F my_script.breakpoint_func 1
引入其他lldb script
command script import “~/my_script.txt"
删除命令pf
command unalias pf
显示命令历史列表(report navigator中有更详细的内容)
command list
alias
获取当前所有alias
help -a
获取和关键字相关的alias
apropos break
设置positional alias
command alias sbr breakpoint set -l %1
command alias pf expr (CGRect)[self.view frame]
设置regular alias
command regex sbr ’s/(\[0-9\]+)/breakpoint set -l %1'
command regex pf
s/(.+)/expr (CGRect)[%1 frame]/
s/^$/expr (CGRect)[self.view frame]/
持久化alias
创建~/.lldbinit文件 ,添加以下内容:
command regex pf ‘s/(.+)/expr (CGRect)[%1 frame]/’ ‘s/^$/expr (CGRect)[self.view frame]/’
custom summary
type summary add CGRect -s "width = ${var.size.width}, height = ${var.size.height}"
为SavingsAccount设置summary
command script import ~/account.py
type summary add -F account.count_summary SavingsAccount
删除
type summary delete CGRect
过滤,只显示firstName属性
type filter add SavingsAccount —child _firstName
改变显示格式
typedef int hex_month
type format add —format hex hex_month
quicklook
quicklook in lldb
https://github.com/ryanolsonk/LLDB-QuickLook
quicklook in xcode
http://nshipster.com/quick-look-debugging/
扩展LLDB命令
lldb的python接口文档
http://lldb.llvm.org/python_reference/index.html
chisel:Facebook的LLDB扩展
border self.view
border --color green self.view
让view透明
mask self.button
让view从透明状态恢复
unmask self.button
打印当前界面的layer tree
pca
打印当前界面的view 层级
pviews
打印view的responder chain
presponder self.view
交互式查看view的层级树
vs self.view
重绘当前界面
caflush
快速闪烁view
flicker self.view
显示view
show self.view
隐藏view
hide self.view
打印class的继承树
pclass self.property
截屏预览
visualize self.view