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

lldb 'step into' can't jump into function call on Xcode7?

我使用 Xcode7 来调试应用程序。

似乎 step into 表现得像 step over,无法跳转到子过程的执行?它只是每次跳转到源代码中的下一行。

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

来自GDB Manual

Also, the step command only enters a function if there is line number information for the function. Otherwise it acts like the next command. This avoids problems when using cc -gl on MIPS machines. Previously, step entered subroutines if there was any debugging information about the routine.

而且我发现 Step into 当我有源文件时效果很好。

所以也许我犯了一个错误。但是lldb非常缺乏文件。

如您所见,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.

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

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

settings set target.process.thread.step-in-avoid-nodebug 0

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

请注意,大多数 lldb 命令都记录在 help 系统中。例如,help step 会显示步骤命令的上述选项,而 apropos step 会显示设置。