在协议方法上设置断点

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在协议方法上设置断点相关的知识,希望对你有一定的参考价值。

基本上我需要在协议方法上设置一个断点,以便捕获对符合该协议的对象的所有调用。我有一个自定义框架,其中包含许多符合协议的类,因此在每个类上手动设置断点是不可行的。

我尝试从Xcode编辑器设置断点:

enter image description here

但是,在设置断点时,我只得到分配方法的断点:allocation breakpoints

,正如预期的那样,调用doSomething()时调试器不会停止。

我也试过添加符号断点,这里也没有运气:enter image description here

这里有一些演示代码来说明这一点:

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

以上是关于在协议方法上设置断点的主要内容,如果未能解决你的问题,请参考以下文章

python调试之pdb调试工具

为啥这段js代码设置断点单步调试能够走通,得到结果;但取消断点直接运行就不行了?

在windbg中的COM类方法上设置断点

WinDbg设置托管进程断点

idea走断点的时候怎么显示程序的方法调用栈区

如何在事件上设置断点? [复制]