【发布时间】:2015-03-17 18:36:10
【问题描述】:
出于调试目的,是否可以在程序运行时打印出对视图帧的更改,而无需停止调试会话?
【问题讨论】:
标签: ios debugging uiview trace lldb
出于调试目的,是否可以在程序运行时打印出对视图帧的更改,而无需停止调试会话?
【问题讨论】:
标签: ios debugging uiview trace lldb
您可以使用 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 寄存器 rdi 中的 self,但访问的是正确的寄存器 depends on your architecture。它通过在选择器setFrame: 的任何调用上设置断点并在触发断点时运行 LLDB 评估命令来实现这一点。然后断点命令在打印完帧后恢复执行。
这会将帧更改输出到您应用中的任何视图。如果您想在帧发生变化时进入调试器,请忽略continue 命令。
【讨论】:
frame 属性上使用KVO 并使用通常的NSLog 打印它呢?