我知道一个Swift函数的名字,并想从LLDB调用该函数进行调试.
我试着做:
expr -- function_with_a_breakpoint()
这会运行函数并正确解析,但不会达到我设置的断点.理想情况下,我希望从LLDB内部触发,而不必手动从应用程序UI触发函数.这样会更方便.
我知道一个Swift函数的名字,并想从LLDB调用该函数进行调试.
我试着做:
expr -- function_with_a_breakpoint()
这会运行函数并正确解析,但不会达到我设置的断点.理想情况下,我希望从LLDB内部触发,而不必手动从应用程序UI触发函数.这样会更方便.
我把这个答案加上了额外的注释,因为当我们想要到达断点时,通常会从LLDB触发一个Swift函数.
我喜欢在LLDB中管理断点,因为我不会中断Xcode和控制台之间的流程.
你问题的答案在这里.我们必须设置-i
标志以触发来自LLDB的函数:
(lldb) expr -i 0 -- function_with_a_breakpoint()
我们通常使用LLDB中的函数触发器手动触发断点.
如果我们想在函数上设置断点,并且知道其名称:
(lldb) breakpoint set -n function_with_a_breakpoint
使用文件名和行号:
(lldb) breakpoint set --file foo.swift --line 12
// copy the breakpoint number into the modify command below
我们还可以使用--one-shot
标志一次性创建断点.
(lldb) breakpoint modify --one-shot 1
流程示例:
(lldb) run
(lldb) kill
... hit breakpoints...
(lldb) continue
在上面的例子中,我们可以在kill
后触发函数.