xcode - Xcode 调试 - 你如何知道下一个方法调用是什么?
问题描述
如果我在特定的代码行设置了断点,我试图弄清楚如何确定 Xcode 中的下一个方法调用是什么。有没有办法告诉你接下来执行什么方法?使用“Step Over”的问题在于,有时它会切换到显示十六进制值的屏幕(我不知道它叫什么)。我猜这是某种显示字节码的屏幕?我不确定如何解决这个问题并转到链中的下一个方法。
解决方案
只需查看屏幕左侧的堆栈跟踪。最上面的行(第 0 行)是您当前所在的函数。下一行(第 1 行)是调用当前函数的函数,它是当前函数完成后您将返回的函数。
看看那个堆栈跟踪。注意有些行是粗体的,有些不是。粗体线是您拥有源代码的函数。您编写的代码或您正在使用的任何 3rd 方库中的代码。
如果您正在单步执行一些自己的代码并到达函数的最后一行,请查看堆栈跟踪。看第一行。是粗体还是粗体?如果没有,那么就没有源代码,如果您输入该函数,您将看到汇编代码(所有那些十六进制的东西)。
假设第 0 行(您当前的函数)是您自己的代码。然后您会看到第 1 行和第 2 行不是粗体,但第 3 行是粗体,并且您想在第 3 行中找到您的代码。单击“step out”向上箭头 (↥) 以完成当前功能。这将带你到第 1 行(现在它变成第 0 行)。现在你在汇编代码中。只需再次点击“退出”按钮。再次点击它,直到您再次返回自己的代码。
只需查看堆栈跟踪,即可了解每次单击“step out”后会将您带到何处。
下图是一个例子。查看堆栈跟踪。第 0 行是我当前所在的函数。它effective
在我的ViewController
班级中命名。请注意,它是粗体。第 1 行是调用第 0 行的函数。第 1 行是我的cellForRowAt
方法。它也是粗体的。调试器当前位于effective
方法的最后一行。如果此时我“跳过”或“退出”,我将离开该effective
方法并返回到调用它的位置。第 1 行显示了它的位置。由于第 1 行是粗体,我知道我有它的代码。
一旦您离开当前函数并返回到前一个函数,调试器中的所有行都会向上移动。第 1 行变为第 0 行。现在我知道,当我离开我的cellForRowAt
方法时,我会被带入我没有代码的代码中(因为堆栈跟踪中的那一行不是粗体)。事实上,正如您在堆栈跟踪中可以看到的那样,在堆栈跟踪一直返回到main
. 所以除非你想看大量的汇编代码,一旦你在 中完成调试cellForRowAt
,你不妨点击“继续执行程序”按钮。
推荐阅读
- pycharm - 如何在 Pycharm 中操作两个分别为不同 Terraform 工作区配置的终端窗口?
- react-native - 为什么我不能使用钩子状态在 TextInput 中再次编辑文本?
- corda - 流测试中的PostgreSQL模式
- javascript - 如何将变量随机分配给具有特定属性的类?
- java - 在android/java中调用createNewFile()时,为什么会得到:java.io.IOException: No such file or directory
- reactjs - 使用 Ionic 和 React 对齐工具栏中的按钮
- javascript - 如何在反应羽毛笔图像处理程序中访问道具
- autodesk-forge - Forge Viewer 的 TypeScript 定义缺少 getFragmentProxy
- rabbitmq - RabbitMq,添加队列中不存在的值
- excel - 运行时错误 5 - 保存到共享驱动器时