【问题标题】:debugging a function called from another function with RStudio使用 RStudio 调试从另一个函数调用的函数
【发布时间】:2016-05-20 17:02:12
【问题描述】:

我有两个脚本,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 中的另一个函数调用的函数?

【问题讨论】:

  • 似乎您必须使用 rstudio 中的源按钮(或键盘快捷键),它将debugSource("fun.r") 打印到控制台,但我仍然无法通过将源替换为 debugSource 来进行调试在你的 main.r

标签: r debugging rstudio


【解决方案1】:

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

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

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

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

  4. 来源 main.r

你会遇到断点。

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

【讨论】:

  • 酷,它有效!这个过程有点奇怪(对我来说),但它可以完成工作,所以没关系。
猜你喜欢
  • 2017-05-13
  • 2011-09-19
  • 2021-08-24
  • 1970-01-01
  • 2021-11-19
  • 1970-01-01
  • 1970-01-01
  • 2019-06-02
  • 1970-01-01
相关资源
最近更新 更多