当使用Swift时,如何在lldb中设置符号断点?例如,有时我会使用:
(lldb) b set -F '-[UIView(AdditionalLayoutSupport) updateConstraintsIfNeeded]'
但这种方法不再起作用:
断点2:没有位置(待定)。警告:无法将断点解析为任何实际位置。
我也尝试过
(lldb) b set -F 'UIView.updateConstraintsIfNeeded()'
(lldb) b set -F 'UIView.updateConstraintsIfNeeded'
但是没有爱情。我想问题归结为lldb在使用Swift时认为什么是“完全限定函数名称”。文档如下:
-F(--fullname)
按完全限定函数名称设置断点。对于C ++,这意味着命名空间和所有参数,而对于Objective C,这意味着具有类和选择器的完整函数原型。可以重复多次以为多个名称创建一个断点。
那Swift呢?
break set -n
。这往往是一个更宽松的名称匹配,因此“断点语言”并不重要(尽管如果您想做Foo::Bar vrs. Swift的Foo.Bar,语言会很重要)。-n
断点的主要问题是它们投掷了太宽的网。但是,Xcode UI还允许您指定要搜索的共享库,这可以在一定程度上减少噪音。 - Jim Ingham