我使用Xcode7来调试App。
似乎step into
表现得像step over
,不能跳进子程序的执行?它每次都会跳转到源代码的下一行。
如果我在UIKit方法中调试(我没有源代码),它会跳转到下一条指令。
答案 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缺乏文件。