C++编程基础: Xcode中的程序调试功能
2025-05-03 04:03:21
本篇文章是配合我发布的同名视频教程的知识点补充。
在本节课的视频当中,我以《C++编程基础: 13. 结构体与联合体》中的程序为例,简单讲述了在Xcode中如何用断点的方式调试程序。
下面我用一个简单的循环语句程序,将1到100的整数相加求和,来看看如何利用Xcode开发环境中的断点分页提供的功能监测调试程序的运行。
在上面的代码中,我在for循环中的语句前加了断点。在断点分页中,右键点击对应的断点项,在弹出菜单中选择“Edit Breakpoint…”
这时会打开编辑断点的窗口,在Condition中可以添加一个条件表达式,当这个条件表达式成立时,这个断点才起作用。
这里我用了一个取余的表达式 i%10==0 来判断 i 的值是否可以被10整除,可以被整除时也就是余数为0的情况,这时断点将会生效。
在Action中选择“Debugger Command”,其中可以使用我们在视频中提到的lldb命令,例如这里我希望断点生效时打印当前的total值。
设置之后,运行程序,可以看到当 i 为10,20,30…100时断点才起了作用,并且注意,在输出窗口中打印出来的total值并不是从1加到 i 的总和,而是加到(i-1)的值,因为每次程序运行中断时,断点所在的相加语句还未执行。
上面每次让程序继续运行,是通过点击工具条里的“Continue program execution”图标按钮,如果不想每次重复操作,可以在编辑断点窗口中,勾选“Automatically continue after evaluating actions”,让程序自动继续执行。
这样不需人工干预,就可以打印出在调试中打印的total值。
另外,如果我们只关心 i 大于90后的相加结果,可以省略Condition里面的条件,直接在Ignore后面填写90,它的意思是忽略经过这个断点的前90次,在第91次经过这个断点时,此位置的断点才开始有效。
同样,当程序在这个断点停下来时,91还没有被加到总和里,所以得出的是1到90整数相加的和4095。