Norman Matloff 和PeteSalzman在其著作《TheArt of Debugging, withGDB,DDD,Eclipse》中曾说过,确认原则是调试的本质。程序员编写程序是为实现特定目的,而一个程序可以由许多目的组成,调试是确认某些目的是否达到了,如果未能达到目的,那么便可通过在调试中查看变量,发现问题症结,进而解决问题。
在R中进行debug有几种不同方式,你如果使用诸如
Rstudio等图形软件,调试代码很容易,所有的调试都在图形界面下完成,你只需要根据需求在图形界面下点击相应选项来进行断点设置、单步执行、查看变量等操作,查找问题症结。
但如果在命令行界面下调试R代码,那就得要借助于一些特别的调试工具。
R的基础软件包base中包含了一些基本的调试工具,当然CRAN中也有一些其它优秀的调试工具。
对于一般用户来说,掌握base中的基本调试工具就能满足大部分需求,下面介绍R基本软件包base中的调试工具的使用方法(也包含setBreakpoint(),其位于utils包中)。
由于在启动和关闭调试中需要用到部分调试命令,这里就先介绍进入调试模式后需要用到的一些基本命令。
1.基本调试命令
在进入dedbug调试状态后,命令提示符从>变为Browse[d]>(d表示函数调用链的深度),可以通过一些基本的命令来进行控制:
- n(表示next): 告诉R执行下一行代码,并且执行完后马上暂停,实际就是一行一行地执行代码。相当于C语言开发工具Turbo C中的trace into。
- c(表示continue):表示会执行若干条语句。若当前处在循环中,这一步会执行完整个循环,若当前处在函数内但又不再循环中,则会执行完当前函数。相当于C语言开发工具Turbo C中的step over。
- where: 输出一份栈跟踪路径,显示到达当前位置的过程中函数的调用序列。
- Q: 退出brower,返回R的主交互模式。
任意R命令: 即使在调试状态browser中,依然处于R的交互模式中,所以你可以用任意R命令。
-