在XCode中调试 - 运行代码和断点

Stu*_*rtM 7 xcode ios ios-simulator

我想知道如何在xcode中进行最佳调试.我知道如何设置断点但理想情况下我希望模拟器停止然后单步执行代码...

不是单步执行断点,而是逐行遍历代码,以便我可以看到它的位置,运行的方法等...

这有可能,如果是这样的话怎么样?

Tho*_*mer 23

在Xcode中调试控制图标

在Xcode 4的代码窗口的左下角,您可以看到调试步骤控件.每个都有一个简短的替代文字来解释它.我将在这里稍微详细解释一下.学习成为专家调试器是许多教科书的主题.

播放按钮alt文本:继续执行程序.你可能已经发现了这个.按此按钮前进到下一个断点.

跳跃箭头替换文字:跳过.反复按此按钮将允许您按照程序的当前级别推进您的程序.它允许您逐步通过当前方法观察程序的行为.当前方法完成后,Step over将带您进入程序堆栈中的调用方法一步.

向下箭头替换文字:步入.按下此按钮将跟随新方法进入其范围,并允许您查看被调用方法中的代码(如果已编译以进行调试).例如,在上面的调试窗口中的当前代码行上单击此按钮将转到_generateSources方法,然后您可以使用Step over进行该方法.

向上箭头替换文字:退出.从程序堆栈中逐步升级当前上下文和调用方法.这与使用Step over完成一个方法,正常执行程序并执行原始范围中未使用Step over调试的所有代码行相同.

电话堆栈的视图

单击带有蓝色背景的轮廓以查看当前的调用堆栈.调用堆栈将始终从当前作用域一直前进到调用以启动程序的第一个方法.您在此处看到的每个方法都是按顺序调用的,以便达到 - [HelloWorldLayer init].当您按下Step out时,当前执行代码行将返回 - [CCNode节点],如果您有源代码,则可以浏览它.

左侧是当前正在执行的代码行范围内可见的局部变量(此图像中的第76行).这些变量是你如何真正使用上述命令,如Step over. backgroundwinSize是在此范围内定义并且当前正在使用的局部变量.当范围退出时,它们将消失. _cmd是指向当前在Objective-C中调用的选择器的指针: - [HelloWorldLayer init].在您是高级调试器之前,您不需要这样做. self是指向包含所有属于当前正在执行的类的ivars的对象的指针,HelloWorldLayer和objc_super是指向HelloWorldLayer父类的指针.


Rav*_*avi 8

我会为@Thomson Corner的答案添加键盘快捷键.

  • 使用'c'继续.'s'步骤,'n'代表接下来,'f'代表完成.我不喜欢用鼠标操作调试器.那些图标太小了,把指针放在它们上面是一种痛苦(偶尔).我一直都是键盘手,键盘非常舒服.

  • 您还应该尝试使用po - 它使用类型提前建议打印出变量值.喜欢po _varName.可以轻松检查变量是否为零值等,

  • 您还可以通过修改来更改命令别名~/.lldbinit.

这是官方教程:http://lldb.llvm.org/tutorial.html.另一个教程:http://www.informit.com/articles/article.aspx?p = 1829415&seqNum = 6.我上面指出的是程序员最常执行的最基本的调试功能.有更多的选项,如异常断点和加载程序,但我很确定如果你刚刚开始,它们将在另一天.