有没有办法断点触摸所有的buttontouchUpInside方法?

有时候会发生,当你得到非托pipe代码的项目,所以你不知道如何解决一个简单的问题。 在大多数情况下,debugging器可以帮助我们达到根本目的,我只想知道xcodedebugging器有多强大。 因为我使用了像OllyDbg这样的一些asmdebugging器,所以这些提供给我们一个no。 select断点最多我使用的是点击事件或点击事件的断点。 那么有什么办法可以在xcode项目上放置类似的断点吗?

听起来就像你正在寻找一种方式来捕获UIButton的任何时候被挖掘。 要做到这一点,我会设置一个符号断点。 在断点浏览器(⌘7)中,单击屏幕底部的加号,然后select添加符号断点

在这里输入图像说明

在对话框中,将以下内容添加到符号字段中:

-[UIControl sendAction:to:forEvent:] 

在这里输入图像说明

这比你所要求的要多一点。 除了UIButton之外,它实际上会捕获所有事件。 不过,我敢打赌,你可以让它满足你的需求。 现在运行应用程序,然后点击一个button。 当它遇到断点时,debugging器将看起来有点不同于你可能习惯看到的正常堆栈跟踪,因为你将在没有源代码匹配符号的地方碰到一个断点。 通过几条命令,你可以破译相当数量的数据。 例如,看下面的截图。

在这里输入图像说明

这就是我所做的,其中的一些意思。 第一件事是跳过(F6)到下一个命令的开头(例如第12行),以确保所有传入variables的寄存器都被正确填充。 从那里,我开始在寄存器中寻找有趣的信息。 在这个例子中,寄存器r15是调用对象(button!),r14,r12和rbx是参数(第4-7行)。 当寄存器中的值是一个指向对象的指针时,当你处于“正常”栈帧时,你可以“打印对象”。 例如:

 (lldb) register read r15 r15 = 0x00007fc6f4a24510 (lldb) po 0x00007fc6f4a24510 <UIButton: 0x7fc6f4a24510; frame = (0 0; 414 100); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x7fc6f4a247b0>> (lldb) po [[(UIButton *)0x00007fc6f4a24510 titleLabel] text] Done