加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – XCode不会在LLDB调用的方法中停止断点

发布时间:2020-12-14 17:47:03 所属栏目:百科 来源:网络整理
导读:XCode 7.2.1 iPad Retina iOS 9.2模拟器 我在XCode项目的特定类中设置了几个断点. 我在下面讨论的所有内容都发生在这个类文件中. 我通过点击装订线在 – (int16_t)areaNbr上设置断点,并且不设置条件或任何内容.我确认,就LLDB而言,它们存在于LLDB提示符中运行
> XCode 7.2.1
> iPad Retina iOS 9.2模拟器

我在XCode项目的特定类中设置了几个断点.
我在下面讨论的所有内容都发生在这个类文件中.

我通过点击装订线在 – (int16_t)areaNbr上设置断点,并且不设置条件或任何内容.我确认,就LLDB而言,它们存在于LLDB提示符中运行断点列表.

项目方案设置为构建用于调试,而不是发布.

我在模拟器中运行该项目,并以与所讨论的方法不同的方法停在断点处,此时我想转到LLDB提示并调用po [self areaNbr]并逐步通过areaNbr.

请注意,因为这可能非常相关,我在项目本身没有调用代码
– (int16_t)areaNbr

现在,如果我向调用该方法的项目添加一些代码,我可以在 – (int16_t)areaNbr上的断点处停止.
例如,如果我添加类似NSLog(@“…%d”,[self areaNbr])的内容

我知道这个问题与编译方法无关,因为没有人调用它,因为如果这是真的,那么我对po [self areaNbr]的调用不会将结果吐出到调试器窗口,如下图所示.因此,该方法正在被编译,并且当然被调试器识别为执行目的…而不是用于步进目的.

仅供参考,[自我区]正在返回“Area01”

enter image description here

在LLDB中调用断点列表将返回以下内容

enter image description here

解决方法

默认情况下,lldb不会在手动调用的代码中的断点处停止.大多数人使用expr& expr -O – 即po打印值&如果他们在为其他目的设定的断点处停下来,他们会感到恼火.

但是,很容易控制此行为,只需使用:

(lldb) expr -i 0 -- [self areaNbr]

然后你会在你的断点处停下来.

在这个例子中,我省略了-O这是对象打印部分,因为如果你只想调用这个方法,你可能不关心在计算表达式后调用结果上的描述.

您可以通过执行以下操作查看表达式评估的所有选项:

(lldb) help expr

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读