On Mon, Jan 24, 2011 at 9:10 PM, Andrew Redd <amr...@gmail.com> wrote: > Davor, > A good place to start might be to mirror the behavior of the str in base R. > That gives quick truncated information, the kind that is helpful in > debugging. > -Andrew
There is an internal function in R called inspect that does some of that. I think Simon wrote it for a particularly difficult debugging problem. Unfortunately it is not exported as part of the R API and, as far as I can see, only be called as an .Internal call from R > foo <- 1:10 > .Internal(inspect(foo)) @20f1420 13 INTSXP g0c4 [NAM(1)] (len=10, tl=0) 1,2,3,4,5,... > .Internal(inspect(list(a=LETTERS[1:4], b=10:12, c=pi))) @3195728 19 VECSXP g0c3 [ATT] (len=3, tl=0) @3195800 16 STRSXP g0c3 [] (len=4, tl=0) @2804c28 09 CHARSXP g0c1 [gp=0x20] "A" @2804bf8 09 CHARSXP g0c1 [gp=0x20] "B" @20cb5b8 09 CHARSXP g0c1 [MARK,gp=0x21] "C" @1eff388 09 CHARSXP g0c1 [MARK,gp=0x21] "D" @319d518 13 INTSXP g0c2 [] (len=3, tl=0) 10,11,12 @28048f8 14 REALSXP g0c1 [] (len=1, tl=0) 3.14159 ATTRIB: @28059f0 02 LISTSXP g0c0 [] TAG: @1ec21a8 01 SYMSXP g0c0 [MARK,NAM(2),gp=0x4000] "names" @31956e0 16 STRSXP g0c3 [] (len=3, tl=0) @202e288 09 CHARSXP g0c1 [MARK,gp=0x21] "a" @1ff31f8 09 CHARSXP g0c1 [MARK,gp=0x21] "b" @1ee5528 09 CHARSXP g0c1 [MARK,gp=0x21] "c" I'll suggest exporting the underlying function inspect. > On Mon, Jan 24, 2011 at 7:55 PM, Dirk Eddelbuettel <e...@debian.org> wrote: >> >> 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@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@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 | e...@debian.org | http://dirk.eddelbuettel.com >> | > _______________________________________________ >> | > Rcpp-devel mailing list >> | > Rcpp-devel@lists.r-forge.r-project.org >> | > >> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel >> | >> >> -- >> Dirk Eddelbuettel | e...@debian.org | http://dirk.eddelbuettel.com >> _______________________________________________ >> Rcpp-devel mailing list >> Rcpp-devel@lists.r-forge.r-project.org >> https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > > > _______________________________________________ > Rcpp-devel mailing list > Rcpp-devel@lists.r-forge.r-project.org > https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel > > _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel