LLDB 指令 https://www.jianshu.com/p/c91f843a64fc p 打印 : 输出值+值类型+引用名+内存地址(xcode中有内存地址,其它平台不确定) 常量的进制转换: //转16进制 (lldb) p/x 100 (int) $9 = 0x00000064 //转8进制 (lldb) p/o 100 (int) $10 = 0144 修改变量(根据地址) : (lldb) p a1 (int) $9 = 12 (lldb) p $9 = 20 (int) $9 = 20 po 打印 : 输出值 expression 修改值 : (lldb) expression width = 80 (CGFloat) $6 = 80 打印 : 输出值+值类型+引用名 call 在断点调用某个方法,并输出此方法的返回值 : (lldb) call width (CGFloat) $12 = 70 打印 : 输出值+值类型+引用名 Thread 堆栈打印 thread backtrace : (lldb) bt 打印当前堆栈信息 (lldb) bt 10 10条当前堆栈信息 thread return 跳出当前方法的执行, 有返回值可以直接返回一个值 : //跳出方法 (lldb) thread return //让带有返回int值的方法直接跳出,并返回值10 (lldb) thread return 10 流程控制 (lldb) c 继续:continue (lldb) n 下一步:next (lldb) s 进入:step (lldb) f 跳出:finish 2 (lldb) frame select 1 跳转到第1帧 : (lldb) frame select 1 frame #1: 0x0000006) at xxViewController.m:597 594 break; 595 596 case 3: { -> 598 cell.textSelect = ^(UITextField *text) { 599 weakSelf.curruntText = text; 600 }; frame variable 查看帧变量(相关对象地址信息列表) Image 镜像 image lookup -address 查找崩溃位置 崩溃地址0x00000001009a9f3a对应代码位置: (lldb) image lookup -a 0x00000001009a9f3a Address: DiDi[0x0000000100609f3a] (DiDi.__TEXT.__text + 6323194) Summary: DiDi`-[MyHomeTableView tableView:cellForRowAtIndexPath:] + 1322 at MyHomeTableView.m:243 image lookup -name 查找方法来源 方法loadData:来源 : (lldb) image lookup -n loadData: image lookup –type 查看成员 查看某个class类的所有属性和成员变量 : (lldb) image lookup -t PageContentModel 返回方法和属性 breakpoint Xcode可手动添加断点,移除,查看断点列表,修改 等等 通过 b 命令也可以, 比如: 当前所有断点数 : (lldb) b list Breakpoint 8: 5 locations. 一共5个文件中有8个断点 条件断点 编辑断点,在condition中设置i==5, 则循环到i为5时就会触发断点 等等 LLDB插件 chisel下载 https://github.com/facebook/chisel 安装插件后可以使用一些高级命令 (lldb) methods p1 查看p1对象所有方法 (lldb) pviews 显示当前页面对象层级信息 taplog 点击控件会打印其信息 show (lldb) show 0xa345262727 显示某个对象 hide (lldb) hide 0xa345262727 隐藏控件 border 给对象增加边框 unborder 删除边框 pclass 打印对象的继承关系 presponder 命令打印响应链 caflush 这个命令会重新渲染,即可以重新绘制界面 pbundlepath 打印app路径 pdocspath 打印文档路径