10.LLDB高级调试+Cycript

查看brew 版本, 查看brew 装了哪些插件,

/usr  代表的是 Unix system resource

chisel

在 家 目录下 vi .lldbinit文件中配置

command script import /usr/local/Cellar/chisel/1.8.1/libexec/fblldb.py


po [self.view recursiveDescription]

command source ~/.lldbinit 指令,如果项目在运行过程中,跑一下就可以了

0xxxxx 为控制器时

pactions 0xxxxxx  指令,查看view 的信息和action

presponder 0xxxxxx 指令,查看响应者链条

pclass 0xxxxxx 指令,查看这个类继承关系

pmethods 0xxxxx 指令,查看这个类中有什么方法

pinternals 0xxxxxx 指令,查看这个类有什么属性

fvc 控制器, fv 视图

fv XXXView 指令,查看内存地址

taplog 指令,断住能响应事件的视图

flicker 0xxxxx 指令,让0xxxxx 控件隐藏并显示,闪烁一下

vs 0xxxxx 指令,进入动态调试环境,w、s、a、d、p 指令

search xxxView 指令,知道类名后可以搜索

sbt 指令,恢复部分符号,查看函数调用栈

Cycript

Cycript是由Cydia创始人Saurik推出的一款脚本语言,Cycript混合了OC、JavaScript语法的解释器,这意味着我们能够在一个命令中使用Oc或者JavaScript,甚至两者并用。它能够挂钩正在运行的进程,能够在运行时修改很多东西。

脚本语言是解释器解释的,编译性语言是编译器编译的。

$  cycript  指令,进入 cycript 

control + d 退出 cycript 

Cycript常用命令

进入Cycript环境

Cycript

附加进程

Cycript –r ip:port

退出Cycript环境

Ctrl + D 

Cycript调试命令

UIWindow.keyWindow() 获取keyWindow

UIApp 获取APPlication单例对象

recursiveDescription() 循环打印子视图

toString() 格式化打印(遇到\n换行)

# 对象地址。拿到该对象,可用于调用方法

* 对象地址。可以取出对象的成员变量

Choose(类名) 查询当前进程中该类型的对象。


Cycript高级用法

Cy文件

Cycript是一门脚本语言,它可以加载封装好的.cy文件。

我们会将常见的Cycript常用功能封装到.cy文件中,便于调试。

非越狱中导入.cy文件

利用MonkeyDev工具导入.cy文件

MonkeyDev本身集成了Cycript。我们只需要将.cy文件通过xcode导入Framworks目录即可。


cy# :   # + 内存地址

cy# :  pviews()  循环打印视图

cy# : pvcs() 循环打印控制器

cy# : choose + 内存地址 

cy# : pactions(# 内存地址 ) 查看可点击控件的action , 左边为 target 右边为 action

cy# :  rp(# 内存地址) 响应者链条


跑monkey 的项目,需要先将空工程跑起来后,再将target APP 添加进去



封装CY 文件

你可能感兴趣的:(10.LLDB高级调试+Cycript)