"Debug location is approximate because the source is not available" 在 R 4.0.0 + RStudio 中
"Debug location is approximate because the source is not available" in R 4.0.0 + RStudio
我已经更新到 R 4.0.0
和 RStudio 版本 1.2.5042
。
我正在开发一个包,我经常使用以下工作流程:
- 通过单击 "Install & Restart" 按钮(包括
--with-keep.source
R CMD INSTALL 选项)从 RStudio 中构建包。
- 在我要调试的函数的
.R
文件中设置断点。
- 调用该函数并等待调试器准确停止在我设置断点的位置。
这曾经工作得很好。但是,现在我总是得到:
Debug location is approximate because the source is not available
这很烦人,因为我仍然可以调试,但我已经不在实际功能中了。
任何hints/ideas这是为什么?
编辑 (11.05.2020)
这似乎是 RStudio 和 R 4.0.0 的问题。这就是我这么认为的原因。我使用了另一台机器 运行ning Windows 10 并执行了以下步骤(按此顺序;对于 Windows 用户应该是可重现的)。一开始我安装了 R 3.6.1 和 RStudio 1.2.5042(在撰写本文时,1.2.5042 是当前版本;还尝试了 RStudio 的预览版 1.3.957)。
克隆我正在开发的包 Github:
git clone "https://github.com/M-E-Rademaker/cSEM"
转到包根目录并打开 cSEM.Rproj
- 运行
devtools::install_github("M-E-Rademaker/cSEM")
自动安装包并下载cSEM
依赖的所有包。
- 在 RStudio 中:点击“
Build
”安装和“Install and Restart
”
- 现在导航到源文件。例如:
R/00_csem.R
并设置一个断点,例如第 321 行。
现在运行下面的一段代码:
model <- "
# Structural model
eta2 ~ eta1
eta3 ~ eta1 + eta2
# Measurement
eta1 =~ y11 + y12 + y13
eta2 =~ y21 + y22 + y23
eta3 =~ y31 + y32 + y33
"
res <- csem(threecommonfactors, model)
调试器应该会启动并将您带到第 321 行。您应该能够更改代码并且您应该 NOT 得到 "debug-location-is-approximate-because-the-source-is-not-availabe" 警告 IF 你使用的 R 版本低于 4.0.0.
- 转到
R/00_csem.R
并删除第321行的断点
- 关闭 Rstudio 并将 R 更新到 4.0.0(使用例如
installr::updateR()
)
- 重要提示:同时获取最新版本的 Rtools,并按照网站上有关需要将 rtools 添加到 PATH 的部分的步骤进行操作。 https://cran.r-project.org/bin/windows/Rtools/
- 由于您需要重新安装所有软件包:再次打开
cSEM.Rproj
; 运行install.packages("devtools")
- 现在重复步骤 3、4、5 和 6。
- 调试器应该再次在第 321 行停止,但是,这次您 do 得到 "debug-location-is-approximate-because-the-source-is-not-availabe" 警告。
这是为什么?欢迎任何ideas/hints/suggestions!!
我尝试的其他事情:
- 正在从 win-library 中删除包并重新安装
- 正在使用
devtools::install_github()
从 GitHub 重新安装软件包
- 检查包根目录
- 更新了所有依赖包
- 在不同的机器上重复该过程
- 我开发了另一个包,您可以从 GitHub 这里克隆:https://github.com/M-E-Rademaker/cSEM.DGP。您可以 运行 使用此包执行相同的过程,但是,在这里我在使用 4.0.0 时没有收到警告...我认为这非常奇怪。
我使用你的包对此进行了调查,发现你在这里看到的是 RStudio / R 界面中相当深的错误,由 R 在 R 4.0 中围绕源引用所做的一些细微更改引起。
只要函数代码中有反斜杠 (\
),就会出现问题。当发生这种情况时,R 会转义它,这会导致 RStudio 认为您正在查看的函数的副本与文件中的不同,这反过来会导致它在代码浏览器中向您显示一个副本,而不是打开文件本身。
由于您的 csem()
函数包含反斜杠,因此会触发该问题。我已将其写在我们的问题跟踪器上:
我已经更新到 R 4.0.0
和 RStudio 版本 1.2.5042
。
我正在开发一个包,我经常使用以下工作流程:
- 通过单击 "Install & Restart" 按钮(包括
--with-keep.source
R CMD INSTALL 选项)从 RStudio 中构建包。 - 在我要调试的函数的
.R
文件中设置断点。 - 调用该函数并等待调试器准确停止在我设置断点的位置。
这曾经工作得很好。但是,现在我总是得到:
Debug location is approximate because the source is not available
这很烦人,因为我仍然可以调试,但我已经不在实际功能中了。
任何hints/ideas这是为什么?
编辑 (11.05.2020)
这似乎是 RStudio 和 R 4.0.0 的问题。这就是我这么认为的原因。我使用了另一台机器 运行ning Windows 10 并执行了以下步骤(按此顺序;对于 Windows 用户应该是可重现的)。一开始我安装了 R 3.6.1 和 RStudio 1.2.5042(在撰写本文时,1.2.5042 是当前版本;还尝试了 RStudio 的预览版 1.3.957)。
克隆我正在开发的包 Github:
git clone "https://github.com/M-E-Rademaker/cSEM"
转到包根目录并打开
cSEM.Rproj
- 运行
devtools::install_github("M-E-Rademaker/cSEM")
自动安装包并下载cSEM
依赖的所有包。 - 在 RStudio 中:点击“
Build
”安装和“Install and Restart
” - 现在导航到源文件。例如:
R/00_csem.R
并设置一个断点,例如第 321 行。 现在运行下面的一段代码:
model <- " # Structural model eta2 ~ eta1 eta3 ~ eta1 + eta2 # Measurement eta1 =~ y11 + y12 + y13 eta2 =~ y21 + y22 + y23 eta3 =~ y31 + y32 + y33 " res <- csem(threecommonfactors, model)
调试器应该会启动并将您带到第 321 行。您应该能够更改代码并且您应该 NOT 得到 "debug-location-is-approximate-because-the-source-is-not-availabe" 警告 IF 你使用的 R 版本低于 4.0.0.
- 转到
R/00_csem.R
并删除第321行的断点 - 关闭 Rstudio 并将 R 更新到 4.0.0(使用例如
installr::updateR()
) - 重要提示:同时获取最新版本的 Rtools,并按照网站上有关需要将 rtools 添加到 PATH 的部分的步骤进行操作。 https://cran.r-project.org/bin/windows/Rtools/
- 由于您需要重新安装所有软件包:再次打开
cSEM.Rproj
; 运行install.packages("devtools")
- 现在重复步骤 3、4、5 和 6。
- 调试器应该再次在第 321 行停止,但是,这次您 do 得到 "debug-location-is-approximate-because-the-source-is-not-availabe" 警告。
这是为什么?欢迎任何ideas/hints/suggestions!!
我尝试的其他事情:
- 正在从 win-library 中删除包并重新安装
- 正在使用
devtools::install_github()
从 GitHub 重新安装软件包
- 检查包根目录
- 更新了所有依赖包
- 在不同的机器上重复该过程
- 我开发了另一个包,您可以从 GitHub 这里克隆:https://github.com/M-E-Rademaker/cSEM.DGP。您可以 运行 使用此包执行相同的过程,但是,在这里我在使用 4.0.0 时没有收到警告...我认为这非常奇怪。
我使用你的包对此进行了调查,发现你在这里看到的是 RStudio / R 界面中相当深的错误,由 R 在 R 4.0 中围绕源引用所做的一些细微更改引起。
只要函数代码中有反斜杠 (\
),就会出现问题。当发生这种情况时,R 会转义它,这会导致 RStudio 认为您正在查看的函数的副本与文件中的不同,这反过来会导致它在代码浏览器中向您显示一个副本,而不是打开文件本身。
由于您的 csem()
函数包含反斜杠,因此会触发该问题。我已将其写在我们的问题跟踪器上: