Skip to content
Prev 33900 / 63424 Next

enabling core dumps

pleydell at supagro.inra.fr wrote:
usually what happens is (# meant to be a comment char)

  % R -d gdb -f test.R
  gdb> run
  ...segfault happens, breaks into gdb
  gdb> bt # print the backtrace
  gdb> up # move up the stack, to get to 'your' frame
  gdb> l # show source listing, use -O0 compiler flag, see gdb> help dir
  gdb> print some_suspect_variable
  gdb> call Rf_PrintValue(some_suspect_sexp)
  gdb> break suspect_function
  gdb> run # restart script, but break at suspect_function

and so on, i.e., you've got all the info you need. A neat trick is to
leave gdb running, repair and R CMD SHLIB your C code, return to gdb and

  gdb> run

to restart the same script but using the new shared lib (possibly
preserving breakpoints and other debugging info you'd used in previous
sessions).

I'm a heavy emacs user but find it easier to stick with gdb from the
shell -- one less layer to get in the way, when I'm confused enough as
it is.

Martin