进入'进入'有什么不对?在Xcode7上的lldb?

时间:2016-07-03 01:58:10

标签: ios xcode7 lldb

我使用Xcode7来调试App。

似乎step into表现得像step over,不能跳进子程序的执行?它每次都会跳转到源代码的下一行。

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

2 个答案:

答案 0 :(得分:2)

正如您所发现的,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会显示设置。

答案 1 :(得分:-1)

来自GDB Manual

  

此外,如果有该功能的行号信息,则步骤命令仅进入功能。否则它就像下一个命令。这可以避免在MIPS计算机上使用cc -gl时出现问题。以前,如果有关于例程的任何调试信息,则步骤进入子例程。

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

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