Thanks for the pointer, and the problem solved. I double checked that Rf_PrintValue works when the option "unwindonsignal" is turned on in gdb. I also found that without "set unwindonsignal on", both "p Rf_PrintValue(colNames)" and "p R_PV(colNames)" could result in SIGTRAP or SIGSEGV sometimes. But not sure what caused the signal and why... because if I stepped into these functions, nothing would happen.
Thanks, Gang On Tue, May 6, 2008 at 8:30 AM, Bill Dunlap <[EMAIL PROTECTED]> wrote: > On Tue, 6 May 2008, Duncan Murdoch wrote: > > > > > On 06/05/2008 3:02 AM, pseudo wrote: > > > Dear all, > > > > > > When using gdb to debug my C code, I use R_PV to show the content of > > > SEXP variables: > > > > > > SEXP sexp; // it is a data.frame > > > SEXP colNames = getAttrib(sexp, R_NameSymbol); > > > > > > A strange thing is that after halting the program: > > > > > > (gdb) p R_PV(colNames) > > > > > > does not show the content of colNames. I am positive my code is right > > > because if I insert "PrintValue(colNames);" in the c code, it will > > > print the right value. My debug result shows that the variable > > > "colNames" failed the "isObject" call. I am not sure whether this is a > > > new feature or bug. Anyone can help? > > > > Are you sure that getAttrib has been called? Depending on the > > optimization level under which your code was compiled, instructions may > > be re-ordered. gdb may show the instruction pointer after that line, > > even though that line hasn't been run yet. > > R_PV(sexp) only prints if isObject(sexp) is true, i.e., if it > is "internally classed". Try using Rf_PrintValue(colNames) from > the debugger. > > src/main/print.c contains: > /* Print an S-expression using global options */ > void PrintValue(SEXP s) > { > PrintValueEnv(s, R_GlobalEnv); > > } > /* Ditto, but only for objects, for use in debugging */ > void R_PV(SEXP s) > { > if(isObject(s)) PrintValueEnv(s, R_GlobalEnv); > } > and include/Internals.h has the usual add-Rf_ #define: > #define PrintValue Rf_PrintValue > > ---------------------------------------------------------------------------- > Bill Dunlap > Insightful Corporation > bill at insightful dot com > 360-428-8146 > > "All statements in this message represent the opinions of the author and do > not necessarily reflect Insightful Corporation policy or position." > ______________________________________________ R-devel@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-devel