gpt4 book ai didi

c++ - 调试可能的 Rcpp 内存泄漏时遇到问题

转载 作者:行者123 更新时间:2023-11-30 02:14:40 25 4
gpt4 key购买 nike

我正在使用名为 RcppCoDA 的 RcppEigen 编写一个 R 包

我认为我的项目中某处可能存在内存泄漏,但我不确定。不幸的是,我在运行 Valgrind 时遇到了问题,因为它似乎不支持 OS X Mojave,而且我遇到了详细的错误 here .

我认为重现错误应该很容易:

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 工作 as outlined here我真的不知道如何调试。我什至不确定我的代码或其他地方是否存在错误。

如有任何帮助,我们将不胜感激!

最佳答案

多亏了一些有用的评论,我才能够让 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 输出。

谢谢你的帮助!

关于c++ - 调试可能的 Rcpp 内存泄漏时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57360360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com