gpt4 book ai didi

ios - 是否可以使用断点来发现下一个执行的代码

转载 作者:行者123 更新时间:2023-12-01 18:18:44 25 4
gpt4 key购买 nike

这可能看起来有点倒退,但我在一个巨大的 iOS 应用程序中,并试图了解可视界面元素( View 、控件)在哪里调用代码。不幸的是,许多 View 都是动态构建的,所以它不像只进入 Interface Builder 并查看 Target/Actions 和 IBOutlets 那样简单。

通常,人们使用断点的方式是提前在代码中的预定位置设置断点,然后等待它们被命中。

好吧,我想知道是否有可能以这样的方式(可能通过 LLDB?)设置断点,它本质上说...“ 嘿,我不知道接下来会执行什么,但无论如何,打破那里。

这对我弄清楚 View 和控件在哪里输入代码非常有用。

最佳答案

bneely 建议的方法是全面了解正在发生的事情。如果您想要一种简单的方法来快速获取一些代码并稍微了解所涉及的基类,您可以使用符号断点。

例如,假设我想获取一些 UIButton 事件回调的代码。我可以添加以下符号断点:'-[NSObject performSelector:withObject:withObject:]'。 (是的两个withObjects)。这可能会在一些汇编代码中停止。幸运的是,选择器位于寄存器中,因此使用 gdb: info registers 或 lldb register read 应该显示选择器。然后就是 cmd+shift+o(快速打开),粘贴到选择器中并在(希望是单个)结果上按 Enter 键,或者根据上下文判断。

另一个有用的可能是:
'-[UIControl sendActionsForControlEvents:]'

此外,查找 UI 代码的一个好方法是在项目中搜索 UI 控件显示的文本。

如果一切都失败了,希望代码库的贡献者遵循良好的命名约定并很好地组织文件。

编辑:

如果选择器一开始没有出现,而是你得到类似“_controlTouchBegan:withEvent”的东西,那么只需继续,直到你点击相关的选择器。

关于ios - 是否可以使用断点来发现下一个执行的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19015541/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com