【问题标题】:Using Valgrind with RInside programs将 Valgrind 与 RInside 程序一起使用
【发布时间】:2011-12-17 16:48:42
【问题描述】:

有人知道如何使用 Valgrind 来内存调试 RInside 程序吗?

【问题讨论】:

    标签: c++ r valgrind rcpp rinside


    【解决方案1】:

    当您使用 RInside 时,您创建了一个独立的 C++ 程序 --- 它恰好与 R 链接,从而嵌入了 R

    因此,valgrind 的使用与其他 C++ 程序没有什么不同。您希望 valgrind 分析的所有代码都可能必须使用正确的设置重新构建(请参阅 Valgrind 站点上的 preparing your program),如果您也希望在这些组件上输出 Valgrind,则包括 RRInside

    【讨论】:

    • 编译一个简单的程序:#include <RInside.h> int main(){ RInside R; }g++ -I/usr/share/R/include -I/usr/local/lib/R/site-library/Rcpp/include -I/usr/local/lib/R/site-library/RInside/include -pipe -O0 -g -Wall testv.cpp -L/usr/lib64/R/lib -lR -lblas -llapack -L/usr/local/lib/R/site-library/Rcpp/lib -lRcpp -Wl,-rpath,/usr/local/lib/R/site-library/Rcpp/lib -L/usr/local/lib/R/site-library/RInside/lib -lRInside -Wl,-rpath,/usr/local/lib/R/site-library/RInside/lib -o testv 我得到了这个link 有错误!
    • 感谢发布。我不是一个出色的 Valgrind 用户,但对我来说这看起来 干净:它报告了一些源自 libz(R 链接到)的问题,但在 R(或 RInside)本身中没有任何问题。所以没有问题。要真正证明这一点,您实际上可以添加一个明确的故意泄漏(即在循环中分配十倍于 100k 的内存并且永远不会释放它),您应该看到 Valgrind 指出了该错误。
    • 是否可以抑制源自 libz 和其他代码的问题,因为 RInside 用户可能会忽略它们?
    猜你喜欢
    • 1970-01-01
    • 2011-04-28
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 2021-12-04
    • 2016-11-29
    • 2012-12-29
    • 1970-01-01
    相关资源
    最近更新 更多