在协议方法上设置断点
Set breakpoint on protocol method
基本上我需要在协议方法上设置一个断点,以便捕获对符合该协议的对象的所有调用。我有一个自定义框架,其中包含许多符合协议的 classes,因此在每个 class 上手动设置断点是不可行的。
我尝试从 Xcode 编辑器设置断点:
,但是在设置断点时,我只得到分配方法的断点:
,正如预期的那样,调试器在调用 doSomething()
时不会停止。
我也试过添加符号断点,但也不走运:
这里有一些演示代码来说明这一点:
protocol TestProtocol {
func doSomething()
func doAnotherThing()
}
class TestConformingClass: TestProtocol {
func doSomething() {
print("Yay")
}
func doAnotherThing() {
print("Hooray")
}
}
有没有办法拦截对属于协议要求列表一部分的方法的所有调用?
运行 lldb 中的以下命令应该可以解决问题:
breakpoint set --name doSomething
breakpoint set --name doAnotherThing
可能,甚至以下方法也可能有效:
breakpoint set --name doSomething --name doAnotherThing
基本上我需要在协议方法上设置一个断点,以便捕获对符合该协议的对象的所有调用。我有一个自定义框架,其中包含许多符合协议的 classes,因此在每个 class 上手动设置断点是不可行的。
我尝试从 Xcode 编辑器设置断点:
,但是在设置断点时,我只得到分配方法的断点:
,正如预期的那样,调试器在调用 doSomething()
时不会停止。
我也试过添加符号断点,但也不走运:
这里有一些演示代码来说明这一点:
protocol TestProtocol {
func doSomething()
func doAnotherThing()
}
class TestConformingClass: TestProtocol {
func doSomething() {
print("Yay")
}
func doAnotherThing() {
print("Hooray")
}
}
有没有办法拦截对属于协议要求列表一部分的方法的所有调用?
运行 lldb 中的以下命令应该可以解决问题:
breakpoint set --name doSomething
breakpoint set --name doAnotherThing
可能,甚至以下方法也可能有效:
breakpoint set --name doSomething --name doAnotherThing