KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
Recently I've been experimenting with Rcpp (inline) to generate DLLs that perform various tasks on supplied R inputs. I'd like to be able to debug the code in these DLLs line by line, given a specific set of R inputs. (I'm working under Windows.) To illustrate, let's consider a specific example that anybody should be able to run... The code below is a really simple cxxfunction which simply doubles the input vector. Note however that there's an additional variable myvar that changes value a few times but doesn't affect the output - this has been added so that we'll be able to see when the debugging process is running correctly. library(inline) library(Rcpp) f0 <- cxxfunction(signature(a="numeric"), plugin="Rcpp", body=' Rcpp::NumericVector xa(a); int myvar = 19; int na = xa.size(); myvar = 27; Rcpp::NumericVector out1(na); for(int i=0; i < na; i++) { out1[i] = 2*xa[i]; myvar++; } myvar = 101; return(Rcpp::List::create( _["out1"] = out1)); ') After we run the above, typing the command getLoadedDLLs() brings up a list of DLLs in the R session. The last one listed should be the DLL created by the above process - it has a random temporary name, which in my case is file7e61645c The "Filename" column shows that cxxfunction has put this DLL in the location tempdir() , which for me is currently C:/Users/TimP/AppData/Local/Temp/RtmpXuxtpa/file7e61645c.dll Now, the obvious way to call the DLL is via f0 , as follows > f0(c(-7,0.7,77)) $out1 [1] -14.0 1.4 154.0 But we can of course also call the DLL directly by name using the .Call command: > .Call("file7e61645c",c(-7,0.7,77)) $out1 [1] -14.0 1.4 154.0 So I've reached the po
Tags (comma-separated)
Save Edits
Cancel