【问题标题】:lldb 'step into' can't jump into function call on Xcode7?lldb 'step into' 不能跳转到 Xcode7 上的函数调用?
【发布时间】:2016-11-05 02:02:19
【问题描述】:

我使用 Xcode7 调试一个 App。

似乎step into 的行为类似于step over,不能跳转到子过程的执行中?每次只是跳转到源代码的下一行。

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

【问题讨论】:

    标签: ios xcode7 lldb


    【解决方案1】:

    来自GDB Manual

    另外,step 命令只有在函数有行号信息的情况下才会进入函数。否则它就像下一个命令一样。这可以避免在 MIPS 机器上使用 cc -gl 时出现问题。以前,如果有关于例程的任何调试信息,则 step 进入子例程。

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

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

    【讨论】:

      【解决方案2】:

      如您所见,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 会显示设置。

      【讨论】:

        猜你喜欢
        • 2023-01-07
        • 1970-01-01
        • 2020-04-20
        • 2014-03-27
        • 1970-01-01
        • 1970-01-01
        • 2013-03-03
        • 2010-09-26
        • 1970-01-01
        相关资源
        最近更新 更多