Debugging with RStudio

Overview

RStudio includes a visual debugger that can help you understand code and find bugs. The debugger includes the following features:

  • Editor breakpoints, both inside and outside functions
  • Code and local environment visualization during debugging
  • Debug stepping tools (next, continue, etc.)
  • Deep integration with traditional R debugging tools, such as browser() and debug()

Setting editor breakpoints

The simplest way to invoke the debugger is to set a breakpoint. You can set a breakpoint in R code by clicking to the left of the line number in an R script, or pressing Shift+F9.

Breakpoints can be set both inside and outside functions. When a breakpoint is set inside a function, it will be hit whenever the function is executed; when a breakpoint is set outside a function, it will be hit only when the file containing the line is sourced.

The file needs to be both saved and sourced in order for RStudio line up running code with the code in your file. RStudio will show you a warning if you need to save and/or source your file to activate a breakpoint.

If you have trouble setting and hitting breakpoints, see Breakpoint Troubleshooting.

Debug mode

When RStudio encounters a breakpoint, it will enter debug mode. 

Environment pane

The environment pane shows the local environment of the function as it runs. In this case, the pane is showing the local environment of  foo() . The expression  x <- 1  has just been evaluated, so the object  x  is now listed.

Source window

The source window highlights the expression that's about to be evaluated; in this case, it's  y <- 2 .

Console

The R console window shows a toolbar in debug mode. The toolbar commands:
Next (F10)
Execute just the current (highlighted) expression, then pause.
Continue (Shift+F5)
Execute until a breakpoint is encountered.
Stop (Shift+F8)
Stop running the code and leave debug mode.
The  Browse[N]>  prompt is a normal R prompt with a few special commands available ( reference ). Expressions entered at the prompt are evaluated in the environment of the function currently executing, so you can use the prompt to modify the function's environment or test the value of expressions.

Traceback pane

The traceback pane shows the list of the functions that are currently running, with the most recent function on top. Click any function in the pane to see the expression currently being evaluated in the function and the function's local environment.

NOTE: Clicking on a function in the Traceback pane does not change the environment in the console. Expressions entered in the console will always be evaluated in the context of the currently executing function (marked with a green arrow in the Traceback pane).

Debugging and package development

Breakpoints can be set in package code just as they can in free-standing R code. The primary difference is that you'll need to have an up-to-date build of your package in order to set breakpoints. If your package build isn't up to date, RStudio will warn you when you try to set a breakpoint.

In order to debug effectively in your package, you'll also want to ensure that you package is compiled with the --with-keep.source option. This option is the default for new packages in RStudio; if you need to set it manually, it can be found in Tools -> Project Options -> Build Tools.

When a breakpoint is set in a file inside a package, RStudio will automatically disable the breakpoint when the package is unloaded and enable the breakpoint when the package is loaded. If you're having trouble setting breakpoints in a package, make sure that the package was compiled with source information as described above and that its build is up-to-date.

Advanced: Using the debugger with R debugging commands

RStudio enters debug mode whenever it encounters an interactive browser. There are times when you may wish to debug in code that cannot contain breakpoints, or you may need more advanced behavior, such as conditional breakpoints.

In these cases, you can use R debugging utilities to cause the interactive browser to be invoked at the desired time; once the browser is invoked, RStudio's debugging tools will become available.

Conditional breakpoints
The  browser() command ( reference) can be inserted anywhere to create a breakpoint. The command can be wrapped in an if statement to make a conditional breakpoint; for instance:  if (x == 0) browser().
Codeless breakpoints
The commands  debug() and  debugonce() ( reference) can be used to set a breakpoint whenever a function is executed. This makes it possible to set breakpoints in functions for which source files are not readily available.
Error breakpoints
It is sometimes useful to invoke the debugger when an error occurs. To do this, have R invoke a browser on error by setting options(error = browser). This may have undesirable side effects, since it will invoke a browser on  every error regardless of origin; consider enabling it only for the duration of your debug session.

Related Topics

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值