[Rcpp-devel] Need Help: debugging Rcpp with gdb on Windows 8

Kumar Aiyer kumar_neel at yahoo.com
Tue Sep 23 21:14:01 CEST 2014


Hi John:
Thanks for the info. I have not checked if it works in vanilla MingW. Doing that today. However here is the summary from the user guide which clearly states it has been tested.  The problem may be with the 64bit libraries.

2.7 Compile and run the C program
This description explains how to compile and run the C program in Windows using the
MinGW development environment, assuming we saved the code to the file example1_pvwatts.c.
This example was tested with MinGW gcc version 4.6.2.
To compile and run the program, the following files must be in the same folder:
• The .c file containing the program code
• The sscapi.h header file
• The dynamic library file, for example ssc32.dll
• The daggett.tm2 weather file
To compile the program, type the following command at the Windows command prompt:
c:\> gcc example1_pvwatts.c ssc32.dll -o pvwatts.exe
To run the program, specify a weather file on the command line. Here, we use the TMY2
file for Daggett, California:
c:\> pvwatts.exe daggett.tm2
ac: 1668.23 kWh
 
best

Kumar Aiyer 


On Monday, September 22, 2014 8:16 PM, Kumar Aiyer <kumar_neel at yahoo.com> wrote:
 


I am developing a module RcppSSC which is an R wrapper for a C library for Solar Energy from NREL.




I am using RStudio to build and install the package for debugging. 



Build session output shows that debug flags are enabled
============================================

 ==> Rcmd.exe INSTALL --preclean --no-multiarch --with-keep.source RcppSSC

* installing to library 'C:/Users/kumar_000/Documents/R/win-library/3.1'
* installing *source* package 'RcppSSC' ...
** libs
g++ -m64 -I"C:/PROGRA~1/R/R-31~1.1/include" -DNDEBUG -I. -I"C:/SAM/ssc-sdk-2014-1-21"   -I"C:/Users/kumar_000/Documents/R/win-library/3.1/Rcpp/include" -I"d:/RCompile/CRANpkg/extralibs64/local/include"     -g -O3 -Wall -pipe -pedantic -Wno-variadic-macros -c RcppSSC.cpp -o RcppSSC.o
g++ -m64 -shared -s -static-libgcc -o RcppSSC.dll tmp.def RcppSSC.o -LC:/SAM/ssc-sdk-2014-1-21/win64/ -lssc -Ld:/RCompile/CRANpkg/extralibs64/local/lib/x64 -Ld:/RCompile/CRANpkg/extralibs64/local/lib -LC:/PROGRA~1/R/R-31~1.1/bin/x64 -lR
installing to C:/Users/kumar_000/Documents/R/win-library/3.1/RcppSSC/libs/x64

=============================================
Running the code in Rstudio
=============================================
test_script.r
==========
require(Rcpp)
require(RcppSSC)

ssc_module <- Module( "RcppSSC","RcppSSC")
ssc <- ssc_module$RcppSSC
s <- new( ssc, "pvwattsv1" )
RStudio crashes "R Session Aborted. R encountered a fatal error. The session was terminated"

=============================================

Running the code in gdb

I used the steps outlines in the following web page and face the same issues. Cannot get symbolic debug information in gdb or the correct source file

I used the following steps

1) set DEBUG=T 
2) C:\Rtools\gcc-4.6.3\bin64\gdb.exe rgui

3) type cont in gdb
4) load the script test_script.r in the R session
4) Execute the R code until the line s <- new( ssc, "pvwattsv1" )
in the R 
5) At this stage code runs fine. 
6) I checked the object ssc created in R.
7) Results are as follows 

> ssc
C++ class 'RcppSSC' <00000000076FD250>
Constructors:
    RcppSSC(std::string)
        docstring : constructor with module name
 
8) Next I set a breakpoint in gdb in the function init which is called from the public constructor. I do this by choosing "Misc -> break to debuger" from the menu in RGui
9) I then execute "break init" in gdb
10) I get the following output which makes me to believe that no symbolic information was read in. NEED HELP ON THIS? Why is this happening despite compiling with the -g flag


Program received signal SIGTRAP, Trace/breakpoint trap.
0x000000006c714b01 in R_gl_tab_set ()
   from C:\Program Files\R\R-3.1.1\bin\x64\R.dll
(gdb) break init
Function "init" not defined.
Make breakpoint pending on future shared library load? (y or [n]) y

Breakpoint 1 (init) pending.
(gdb)

11)  Next type cont in gdb and get back to RGui
12) In RGui execute the line 
s <- new( ssc, "pvwattsv1" )


13) In gdb, I get
(gdb) cont
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0x000000006b4c2508 in _rcpp_module_boot_RcppSSC ()
   from C:\Users\kumar_000\Documents\R\win-library\3.1\RcppSSC\libs\x64\RcppSSC.
dll
(gdb)

So, no symbolic tables and no way to see which line of code SEGVs. Need help.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.r-forge.r-project.org/pipermail/rcpp-devel/attachments/20140923/69bb0979/attachment-0001.html>


More information about the Rcpp-devel mailing list