我正在尝试使用gdb调试使用Rcpp功能的简单C ++子例程。我使用选项-O0 -g构建子例程foo.cpp。我使用R -d gdb启动R,然后使用dyn.load(“ foo.so”)加载子例程,然后使用.Call(“ foo”,X)调用该子例程。没有问题。当我在gdb中输入子例程时,我可以打印标准的C ++类型,例如“ print i”,其中i是int。但是,我无法打印Rcpp :: NumericMatrix xout的元素。我试过了
打印xout(1,1)
以及
打印R_PV(xout(1,1))
有谁知道如何做到这一点?
我的C ++代码是:
#include <iostream>
#include <Rcpp.h>
RcppExport SEXP foo(SEXP x){
using namespace Rcpp;
NumericMatrix xin = NumericMatrix(x);
int nrow = xin.nrow();
int ncol = xin.ncol();
NumericMatrix xout(nrow, ncol);
for(int j = 0; j<ncol; j++) {
xout(0,j) = xin(0,j);
for (int i=1; i<nrow; i++) {
if (ISNA(xin(i,j)))
xout(i,j) = xout(i-1,j);
else
xout(i,j) = xin(i,j);
}
}
return(xout);
}
Run Code Online (Sandbox Code Playgroud)
从命令行运行:
R CMD SHLIB foo.cpp
Run Code Online (Sandbox Code Playgroud)
然后我开始使用R …