在Xcode7上的lldb中“踏入”有什么问题?

问题描述 投票:1回答:2

我使用Xcode来调试App。

似乎step into表现得像step over,不能跳进执行一个子程序?它只是跳转到源代码中的下一行。

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

ios xcode7 lldb
2个回答
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
投票

来自GDB Manual

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.