lldb 'step into' 无法跳转到 Xcode7 上的函数调用?

Kar*_*arl 2 ios lldb xcode7

我使用Xcode7来调试App。

看起来step into行为就像step over,无法跳转到子过程的执行?每次只是跳转到源代码中的下一行。

如果我在 UIKit 方法中进行调试(我没有源代码),它会跳转到下一条指令。

Jim*_*ham 5

正如您所发现的,step-in避免没有调试信息的帧。大多数人喜欢只点击一步命令,而不是根据他们所在的行在步骤和下一步之间切换,根据我的经验,倾向于选择step。如果调试器不会在 printf 和其他您没有调试信息的代码中停止,这会更令人愉快。

然而,lldb 的“step”命令有一个选项来控制这一点:

   -a <boolean> ( --step-in-avoids-no-debug <boolean> )
        A boolean value that sets whether stepping into functions will step over functions with no debug information.
Run Code Online (Sandbox Code Playgroud)

如果您经常使用此选项,您可以重置step别名以包含此选项,或创建另一个包含它的别名。使用command alias命令来执行此操作。

如果您总是希望单步执行没有调试信息的代码,只需设置全局设置:

settings set target.process.thread.step-in-avoid-nodebug 0
Run Code Online (Sandbox Code Playgroud)

在调试会话开始时或在 .lldbinit 中。

注意,大部分lldb的命令都记录在help系统中。例如,help step将显示步骤命令的上述选项,并apropos step显示设置。