【发布时间】:2016-11-05 02:02:19
【问题描述】:
我使用 Xcode7 调试一个 App。
似乎step into 的行为类似于step over,不能跳转到子过程的执行中?每次只是跳转到源代码的下一行。
如果我在 UIKit 方法中调试(我没有源代码),它会跳转到下一条指令。
【问题讨论】:
我使用 Xcode7 调试一个 App。
似乎step into 的行为类似于step over,不能跳转到子过程的执行中?每次只是跳转到源代码的下一行。
如果我在 UIKit 方法中调试(我没有源代码),它会跳转到下一条指令。
【问题讨论】:
来自GDB Manual:
另外,step 命令只有在函数有行号信息的情况下才会进入函数。否则它就像下一个命令一样。这可以避免在 MIPS 机器上使用 cc -gl 时出现问题。以前,如果有关于例程的任何调试信息,则 step 进入子例程。
我发现Step into 在我有源文件时效果很好。
所以也许我犯了一个错误。但是lldb的文档非常缺乏。
【讨论】:
如您所见,step-in 避免了没有调试信息的帧。大多数人喜欢只点击一个 step 命令,而不是根据他们所在的行在 step 和 next 之间切换,根据我的经验,倾向于选择 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 会显示上面的 step 命令选项,apropos step 会显示设置。
【讨论】: