原文: 与调试器共舞 - LLDB 的华尔兹
p
是expression --
的简写,po
是expression -o --
的简写,--
表示参数截止。e count = 10
用来修改变量count
的值,e NSArray* $abc = [NSArray array]
用来声明一个变量。thread return
命令,它有一个可选参数,在执行时它会把可选参数加载进返回寄存器里,然后立刻执行返回命令,跳出当前栈帧,函数剩余的部分不会被执行。如:thread return NO
-
暂停,用以下命令更新window上任一UI,点击继续即可看到更改后的效果:
//打印window上所有view
(lldb) po [[[UIApplication sharedApplication] keyWindow] recursiveDescription]//获取指定的view (lldb) e id $myView = (id)0x7f82b1d01fd0 //对这个view做更改 (lldb) e (void)[$myView setBackgroundColor:[UIColor blueColor]]
-
查找按钮的target,用以下代码获取到按钮的target和action,然后设置一个符号断点即可:
//获取$myButton的target
(lldb) po [$myButton allTargets]
//输出
{(
<MagicEventListener: 0x7fb58bd2e240>
)}//获取上述target的action (lldb) po [$myButton actionsForTarget:(id)0x7fb58bd2e240 forControlEvent:0] //输出 <__NSArrayM 0x7fb58bd2aa40>( _handleTap: )
-
拓展:用debug view hierarchy 按钮可以更便捷地获取当前window上的视图地址,然后用上述方法对该视图进行修改: