[Rcpp-devel] R.e. Debugging Rcpp packages with GDB
On Tue, Jan 18, 2011 at 2:46 PM,
<rcpp-devel-request at lists.r-forge.r-project.org> wrote:
Can people share any tricks they use to debug Rcpp packages? For example, can I "print" variables in a format that's a bit more high-level, like something that I would get if I sent them to "cout"?
It's not very sophisticated, but I find that much of the time adding Rf_PrintValue(xx) calls to code gives me as much info as I need. If it's a non-SEXP object like int, then Rf_PrintValue(wrap(my_int)).
If that's not entirely obvious from my question, I am not a GDB expert. :-) Basically, my workflow is: "attach to the R process", "set a breakpoint at the function entry point", "single-step and print variable values". I have used watches and conditional breakpoints in GUI debuggers, but not (yet) in gdb. Are there any Rcpp-specific gotchas to using those features with GDB?
I have 2 related "simple questions" after reading through Chapters 1 and 4 of "Writing R Extensions": My build/test chain is: R CMD INSTALL mypackage R --vanilla --debugger gdb run require(mypackage) <test in R> quit() <edit code> R CMD INSTALL mypackage run require(mypackage) ## reload package with edits <lather, rinse, repeat> 1) Is there a "best" way to reload the shared library after rebuilding it? dyn.unload() and dyn.load()? 2) Is there a simple way to include debugging symbols/keep values from getting optimized out when building with Rcpp? Thanks, Christian
Thanks, Davor
A man, a plan, a cat, a ham, a yak, a yam, a hat, a canal ? Panama!