(lldb) b set -F '-[UIVIEw(AdditionalLayoutSupport) updateConstraintsIfNeeded]'
但这不再有效:
Breakpoint 2: no locations (pending). WARNING: Unable to resolve
breakpoint to any actual locations.
我也试过了
(lldb) b set -F 'UIVIEw.updateConstraintsIfNeeded()'(lldb) b set -F 'UIVIEw.updateConstraintsIfNeeded'
但没有爱.我想这个问题归结为lldb在使用Swift时认为是“完全限定的函数名”.文档说:
-F ( –fullname )
Set the breakpoint by fully qualifIEd function names. For C++ this
means namespaces and all arguments,and for Objective C this means
a full function prototype with class and selector. Can be repeated
multiple times to make one breakpoint for multiple names.
斯威夫特怎么样?
解决方法 当lldb为任何更高级的匹配断点(包括-F)设置断点时,它需要知道目标语言,因为它的匹配类型取决于它.默认情况下,lldb选择当前帧的语言,但您可以覆盖它.因此,例如,当您在Swift框架中停止时,要打破ObjC符号,请执行以下 *** 作:(lldb) break set -F '-[UIVIEw(AdditionalLayoutSupport) updateConstraintsIfNeeded]' -L objcBreakpoint 3: where = UIKit`-[UIVIEw(AdditionalLayoutSupport) updateConstraintsIfNeeded],address = 0x0000000100963acc
或者您可以使用-n break选项,该选项不会尝试理解它匹配的符号,而只是在符号名称中对该字符串进行广泛搜索.
注意,在这种情况下,你需要打破ObjC符号,而不是它在Swift中出现的方式,因为快速的一侧实际上只是一个垫片进入objc,并没有真正的快速侧符号可以挂钩.
总结以上是内存溢出为你收集整理的使用Swift和lldb设置符号断点全部内容,希望文章能够帮你解决使用Swift和lldb设置符号断点所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)