是否可以跟踪UIView框架的变化?

时间:2015-03-17 18:36:11

标签: ios debugging uiview trace lldb

出于调试目的,是否可以在程序运行时打印出对视图帧的更改,而无需停止调试会话?

1 个答案:

答案 0 :(得分:3)

您可以使用LLDB断点命令执行此操作。

(lldb) br set -S setFrame:
Breakpoint 4: 133 locations.
(lldb) br command add 4
Enter your debugger command(s).  Type 'DONE' to end.
> e (void) NSLog(@"frame change for %@:", $rdi)
> continue
> DONE
(lldb) c
Process 34698 resuming

此代码访问x86_64寄存器self中的rdi,但访问正确的寄存器depends on your architecture。它通过在选择器setFrame:的任何调用上设置断点并在触发断点时运行LLDB evaluate命令来实现此目的。断点命令然后在打印帧后恢复执行。

这会将帧更改输出到您应用中的任何视图。如果要在帧更改时进入调试器,请忽略continue命令。