使用 RStudio 调试从另一个函数调用的函数

debugging a function called from another function with RStudio

我有两个脚本,main.r

# test
a = 1
source("fun.r")
b = fun(a)
c = a + b 

fun.r

# function
fun <- function(a){
    t = a*2
    b = t + 1
} 

我在fun.r第4行b = t + 1下了一个断点。 RStudio 会忽略该断点。当我 运行 main.r 时,RStudio 不会在 fun.r 中的第 4 行停止:作为事实上,它根本不会停止。如何在 RStudio 中调试从另一个函数调用的函数?

R 的 source 函数不考虑断点。如果你想调试函数,你可以试试这个:

  1. 来源 fun.r(单独)。您将看到 fun() 的副本出现在环境窗格中。

  2. 添加断点。您将在环境窗格中看到标有断点图标的 fun() 副本。

  3. 从 main.r 中删除来源 fun.r 的行(不需要,因为它已经来源)

  4. 来源main.r

你会遇到断点。

要记住的重要一点是,函数必须已经存在才能在其上设置断点,并且 source 将具有断点的副本替换为没有断点的新副本一个断点。