如何从 LLDB 调用带有断点的 Swift 函数?
How to call Swift function with breakpoint from LLDB?
我知道一个 Swift 函数的名称,并且想从 LLDB 调用该函数以进行调试。
我试过:
expr -- function_with_a_breakpoint()
这会运行函数并正确解析,但不会到达我设置的断点。理想情况下,我想从 LLDB 内部触发,而不必手动从应用程序 UI 触发该功能。这样会更方便。
Swift LLDB 中带有断点的函数
我在这个答案中添加了额外的注释,因为当我们想要到达断点时,我们通常会从 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
标志将断点创建为 one-off。
(lldb) breakpoint modify --one-shot 1
奖金工作流程注释
示例流程:
(lldb) run
(lldb) kill
... hit breakpoints...
(lldb) continue
所以我们可以在上面的例子kill
之后触发函数
我知道一个 Swift 函数的名称,并且想从 LLDB 调用该函数以进行调试。
我试过:
expr -- function_with_a_breakpoint()
这会运行函数并正确解析,但不会到达我设置的断点。理想情况下,我想从 LLDB 内部触发,而不必手动从应用程序 UI 触发该功能。这样会更方便。
Swift LLDB 中带有断点的函数
我在这个答案中添加了额外的注释,因为当我们想要到达断点时,我们通常会从 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
标志将断点创建为 one-off。
(lldb) breakpoint modify --one-shot 1
奖金工作流程注释
示例流程:
(lldb) run
(lldb) kill
... hit breakpoints...
(lldb) continue
所以我们可以在上面的例子kill
之后触发函数