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

Dirk Eddelbuettel edd at debian.org
Wed Jan 19 16:01:57 CET 2011


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


More information about the Rcpp-devel mailing list