[Rcpp-devel] R.e. Debugging Rcpp packages with GDB

Dirk Eddelbuettel edd at debian.org
Tue Jan 25 03:55:50 CET 2011


On 24 January 2011 at 16:36, Davor Cubranic wrote:
| To follow up my original post, it is possible to define GDB pretty-printers using Python. (See http://sourceware.org/gdb/onlinedocs/gdb/Pretty-Printing.html.) Would people be interested in having Rcpp-specific pretty printers?

That would be great. I have read about this feature ever since gcb 7.0 was
announced but have never used. It probably would make a lot of sense here.

Dirk
 
| Davor
| 
| On 2011-01-19, at 7:01 AM, Dirk Eddelbuettel wrote:
| 
| > 
| > On 19 January 2011 at 08:43, Douglas Bates wrote:
| > | > | 2) Is there a simple way to include debugging symbols/keep values from
| > | > | getting optimized out when building with Rcpp?
| > | >
| > | > You could always include -g and then strip what you don't need -- which is
| > | > what Debian and Ubuntu do to give you the *-dbg packages.
| > | >
| > | > R sits on top of Makefile logic, and make is pretty powerful language.  You
| > | > can (literally) do just about anything....   Setting CFGLAGS / CXXFLAGS or
| > | > their PKG_* variants is probably easiest.
| > | 
| > | Or create a file $HOME/.R/Makevars and define CXXFLAGS and CFLAGS in
| > | there.  I have the following contents
| > | 
| > | CFLAGS= -g -pipe -std=gnu99 -Wall -pedantic
| > | CFLAGS= -g -O3 -pipe -std=gnu99 -Wall -pedantic
| > | CXXFLAGS= -g -pipe -Wall -pedantic
| > | CXXFLAGS= -g -pipe -std=c++0x -Wall -pedantic
| > | CXXFLAGS= -g -O3 -pipe -Wall -pedantic
| > | CXXFLAGS= -g -O3 -pipe -std=c++0x -Wall -pedantic
| > | 
| > | and comment out the trailing lines if I want to suppress the c++0x
| > | standard or the optimization when using the debugger.
| > 
| > Seconded. 
| > 
| > That is actually what I do, including the better-than-awesome ccache:
| > 
| > edd at max:~$ cat .R/Makevars
| > # edd 03 Mar 2009
| > 
| > ## for C code
| > CFLAGS=-g -O3 -Wall -pipe -pedantic -std=gnu99
| > #CFLAGS=-O3 -g0 -Wall -pipe -std=gnu99
| > ## for C++ code
| > CXXFLAGS= -g -O3 -Wall -pipe -pedantic -Wno-variadic-macros
| > #CXXFLAGS= -g0 -O3 -Wall -pipe -Wno-variadic-macros
| > #CXXFLAGS= -O3 -g0 -Wall -pipe 
| > ## for Fortran code
| > #FFLAGS=-g -O3 -Wall -pipe
| > FFLAGS=-O3 -g0 -Wall -pipe
| > ## for Fortran 95 code
| > #FCFLAGS=-g -O3 -Wall -pipe
| > FCFLAGS=-O3 -g0 -Wall -pipe
| > 
| > CC=ccache gcc
| > CXX=ccache g++
| > FC=ccache gfortran
| > F77=ccache gfortran
| > MAKE=make -j4
| > edd at max:~$ 
| > 
| > 
| > The -Wno-variadic-macros was once needed when Romain was a tad more
| > aggressive in trying new C++0x features.  
| > 
| > The 'make -j4' also takes care of parallel builds.
| > 
| > Dirk
| > 
| > -- 
| > Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com
| > _______________________________________________
| > Rcpp-devel mailing list
| > Rcpp-devel at lists.r-forge.r-project.org
| > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
| 

-- 
Dirk Eddelbuettel | edd at debian.org | http://dirk.eddelbuettel.com


More information about the Rcpp-devel mailing list