ios - 是否可以跟踪 UIView 框架的更改?

标签 ios debugging uiview trace lldb

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

最佳答案

您可以使用 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 评估命令来实现此目的。断点命令在打印帧后恢复执行。

这会将帧更改输出到应用程序中的任何 View 。如果您想在帧更改时进入调试器,请省略继续命令。

关于ios - 是否可以跟踪 UIView 框架的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29107100/

相关文章:

ios - Swift - 调用中参数 "coder"缺少参数

ios - ARC语义问题,语义问题错误。

perl - 为什么这种魔术 Perl 内部变量的解决方法有效?

java.net.BindException : Address already in use (Bind failed) but port is only used once

ios - 将值从 UIView 传递到 UIVIewController

ios - NSDateFormatter dateFromString 在不正确的日期返回 nil

objective-c - @protected 在 Objective-C 中

node.js - Monorepo 中 NestJs dockerized 应用程序的 VS 代码调试

ios - UIView的根层和 Root View 是什么层级关系?

swift - 有人可以向我详细解释如何正确地为 UIView 创建自定义初始化程序吗?