Xcode:断点和奇怪的屏幕

Xcode: Breakpoints and Weird Screens

当我在 Xcode 中遇到问题时,我被告知使用断点调试我的代码。单步执行代码,按控制台部分上方的小箭头转到下一行。这很好用,就像当我在代码的第 150 行放置一个断点时,我可以 "po" 一个变量并找到它的值。

但是,当我尝试单步执行我的代码,并从一个方法转到另一个方法时,很多时候我会被传送到这个奇怪的数字和字母屏幕,那里的东西甚至都没有遥感.见下文

Wtf 这是什么意思,我的 Xcode 项目显然已经截获了这个克林贡语过渡,如果我应该做些什么呢?

查看左侧并单击当前所选代码之前的命令。这通常会显示您在遇到断点之前编写的最后一段代码

在下面的示例中,0 是遇到断点的位置,而 1 是我编写的最后一位代码。

您用 Objective-C 或 Swift 等语言编写的代码被编译成 machine code 以在给定处理器上执行 - x86 用于模拟器或 ARM iOS device - 在这种情况下,我猜你是 运行 在模拟器上。

机器代码指令执行相当谨慎的操作。例如 c=a+b 会翻译成类似 从内存中取出一个 从内存中取出 b 添加 a 和 b 将结果存储到 c

的内存中

当您在调试器中单步执行代码时,它只会在程序的每一行停止,即使该步骤可能已经执行了许多机器代码指令。

您看到的是框架函数的 assembly code 已被调用,因为您有 "stepped into" 一个 Xcode 没有源代码的函数,所以它必须显示每个低级操作。

您可以使用 'step out' 按钮来 return 您的代码,并使用 'step' 而不是 'step into' 按钮来避免看到这个。

调试器中突出显示的行实质上是检查 %al register 的值(寄存器是 CPU 芯片中的一小块内存)。如果结果 %al 为 0,则下一条指令将跳转到程序的不同部分。