难以调试可能的RCPP内存泄漏

Having Trouble Debugging Possible Rcpp Memory Leak

本文关键字:RCPP 内存 泄漏 调试      更新时间:2023-10-16

我正在使用名为rcppcoda的rcppeigen编写R软件包

我认为项目中某个地方可能有内存泄漏,但我不确定。不幸的是,我在运行valgrind上遇到困难,因为看来它可能不支持OS X Mojave,并且在此处遇到了错误。

我认为复制错误应该很容易:

library(RcppCoDA) # devtools::install_github("jsilve24/RcppCoDA")
library(microbenchmark)
d <- c(100,1000)
X <- matrix(abs(rnorm(prod(d))), d[1], d[2])
X <- clo(X)
# This runs fine
z <- RcppCoDA::alr(X, d=4)
# This for some reason takes forever to run... I think this might be a bug
for (i in 1:1000){
  z <- RcppCoDA::alr(X, d=4)  
}

# This causes RStudio to crash... or takes forever to run...
microbenchmark(
  RcppCoDA::alr(X, d=4), times=10
)

我已经一遍又一遍地重读代码,除非我只是以某种方式滥用RCPP,否我真的不知所措。我什至不确定我的代码还是其他地方是否有错误。

任何帮助都将不胜感激!

多亏了一些有用的评论,我才能够在docker映像中工作。

只是我如何做的概述:

  1. 我使用了Docker Image:Rocker/Rstudio
  2. 启动图像/容器:docker run rocker/rstudio
  3. 在该运行中:在单独的终端:docker ps
  4. 抓住运行映像的容器ID,然后运行:docker exec -it <containerID> bash
  5. 安装Valgrind和DevTools所需的许多其他事情
  6. 与Valgrind调试一起运行R:R -d "valgrind --leak-check=full"
  7. 运行任何代码引起错误并评估Valgrind输出。

谢谢您的帮助!