调试器
调试器是一种工具,它可以逐行运行程序,让我们能够检查程序变量的当前状态。它是跟踪程序缺陷的宝贵工具。这里解释Mu Editor调试器的功能。不用担心,基本每款调试器都提供了相同的功能,即使它们的用户界面看上去不一样。
在调试器中启动程序要使用IDE中的Debug而不是Run菜单项。调试器将被启动并暂停在程序的第一行。调试器通常都有以下按钮:Continue、Step In、Step Over、Step Out 和 Stop。
单击Continue按钮会使程序正常运行,直到终止或遇到断点(稍后会介绍断点)。如果你已完成调试并希望程序正常继续运行,可以单击Continue按钮。
单击Step In按钮会使调试器运行下一行代码,然后再次暂停。如果下一行代码是函数调用代码,调试器将“步入”该函数并跳转到该函数的第一行代码。
单击Step Over按钮会使调试器运行下一行代码,类似于Step In按钮。但是,如果下一行代码是函数调用代码,单击Step Over按钮将“跳过”函数中的代码。函数的代码全速运行,一旦函数调用返回,调试器就会暂停。Step Over按钮比Step In按钮更常用。
单击Step Out按钮会使调试器全速运行代码,直到从当前函数返回。如果你已经使用Step In按钮进入了一个函数调用,现在只想继续执行指令直到退出,单击Step Out按钮即可。
如果你希望完全停止调试且不想继续运行程序的其余部分,可单击Stop按钮。Stop按钮可以用于立即终止程序。
可以在特定行上设置断点,让程序以正常速度运行,直到到达断点所在行,此时,调试器会暂停,让我们检查变量并继续逐步运行各行代码。在大多数IDE中,可以通过双击窗口左侧的行号设置断点。
当前存储在程序变量中的值显示在调试器的调试窗口中的某处。然而,调试程序的一种常用方法是输出调试,即添加print()调用以显示变量的值,然后重新运行程序。尽管这种调试方法简单、方便,但其通常比使用调试器低效。使用输出调试方法,我们必须添加print()调用,重新运行程序,然后删除print()调用。然而,重新运行程序后,你通常会发现需要添加更多的print()调用以便查看其他变量的值。这意味着需要重新运行程序,而这次运行可能会表明需要添加另一轮的print()调用,以此类推。此外,忘记自己添加的某些print()调用并不罕见,这需要额外的删除print()调用的操作。对于简单的程序缺陷,输出调试很方便,但从长远来看,使用真正的调试器可以节省你的时间。