繁体   English   中英

无法调试可能的Rcpp内存泄漏

[英]Having Trouble Debugging Possible Rcpp Memory Leak

我正在使用RcppEigen编写一个R包,称为RcppCoDA

我认为我的项目中某处可能存在内存泄漏,但我不确定。 不幸的是,我在运行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,否则我看不到如何出现内存错误。不幸的是,由于我似乎无法让Valgrind 像这里概述的那样工作,调试失败。 我什至不确定我的代码或其他地方是否有错误。

非常感激任何的帮助!

感谢一些有用的评论,我得以使Valgrind在Docker映像中工作。

只是我的操作方法概述:

  1. 我使用了docker镜像: 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输出。

感谢您的帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM