https://stat.ethz.ch/mailman/listinfo/r-devel
or, via email, send a message with subject or body 'help' to
r-devel-request at r-project.org
You can reach the person managing the list at
r-devel-owner at r-project.org
When replying, please edit your Subject line so it is more specific
than "Re: Contents of R-devel digest..."
Today's Topics:
1. Debug an R windows (Fortran) DLL within R with gdb?
(Andre Mikulec)
2. Re: Debug an R windows (Fortran) DLL within R with gdb?
(Duncan Murdoch)
----------------------------------------------------------------------
Message: 1
Date: Mon, 15 Sep 2014 17:25:49 -0400
From: Andre Mikulec <andre_mikulec at hotmail.com>
To: "r-devel at r-project.org" <r-devel at r-project.org>
Subject: [Rd] Debug an R windows (Fortran) DLL within R with gdb?
Message-ID: <BLU174-W2834A37215473FEE12D3F39CC80 at phx.gbl>
Content-Type: text/plain; charset="iso-8859-1"
Hi,?
I have a Fortran 77 subroutine (dll).
On windows XP, how ?would I 'debug it(Fortran) within R' using gdb?
This is how I made it.
----------------------
R CMD SHLIB main.f
gfortran -m32 ? ? -O3 ?-mtune=core2 -c main.f -o main.o
gcc -m32 -shared -s -static-libgcc -o main.dll tmp.def main.o -Ld:/RCompile/CRANpkg/extralibs64/local/lib/i386 -Ld:/RCompile/CRANpkg/extralibs64/local/lib -lgfortran -LF:/ProgramFiles/R/R-3.1.1/bin/i386 -lR
Here is the contents of the file ?main.f
-----------------------------------------
? ? ? SUBROUTINE NGCD(NA, NB, NGCDO)?
? ? ? ? IA = NA
? ? ? ? IB = NB
? ? 1 ? IF (IB.NE.0) THEN
? ? ? ? ? ITEMP = IA
? ? ? ? ? IA = IB
? ? ? ? ? IB = MOD(ITEMP, IB)
? ? ? ? ? GOTO 1
? ? ? ? END IF
? ? ? ? NGCDO = IA ?
? ? ? ? RETURN
? ? ? END
Thank you,
Andre Mikulec
Andre_Mikulec at Hotmail.com
------------------------------
Message: 2
Date: Mon, 15 Sep 2014 18:05:36 -0400
From: Duncan Murdoch <murdoch.duncan at gmail.com>
To: Andre Mikulec <andre_mikulec at hotmail.com>, "r-devel at r-project.org"
<r-devel at r-project.org>
Subject: Re: [Rd] Debug an R windows (Fortran) DLL within R with gdb?
Message-ID: <541762B0.1050501 at gmail.com>
Content-Type: text/plain; charset=ISO-8859-1
On 15/09/2014, 5:25 PM, Andre Mikulec wrote:
Hi,
I have a Fortran 77 subroutine (dll).
On windows XP, how would I 'debug it(Fortran) within R' using gdb?
This is how I made it.
----------------------
R CMD SHLIB main.f
gfortran -m32 -O3 -mtune=core2 -c main.f -o main.o
gcc -m32 -shared -s -static-libgcc -o main.dll tmp.def main.o -Ld:/RCompile/CRANpkg/extralibs64/local/lib/i386 -Ld:/RCompile/CRANpkg/extralibs64/local/lib -lgfortran -LF:/ProgramFiles/R/R-3.1.1/bin/i386 -lR
Here is the contents of the file main.f
-----------------------------------------
SUBROUTINE NGCD(NA, NB, NGCDO)
IA = NA
IB = NB
1 IF (IB.NE.0) THEN
ITEMP = IA
IA = IB
IB = MOD(ITEMP, IB)
GOTO 1
END IF
NGCDO = IA
RETURN
END
I don't think you put in any compile options to include symbolic
information. You need to do that. I think the option you want is
-gdwarf-2, but I rarely use Fortran, and never use SHLIB, so I could be
wrong. I'll assume you can figure out how to do that.
Run R under gdb using
gdb Rgui
Load your DLL.
Break to gdb using the menu entry "Misc | Break to debugger".
Set a breakpoint, e.g.
b main.f:3
to set it on line 3. Then use c to let R continue, and make a call to
your code. Then the usual gdb commands will work after it breaks.
Duncan Murdoch
------------------------------
_______________________________________________
R-devel at r-project.org mailing list DIGESTED
https://stat.ethz.ch/mailman/listinfo/r-devel
End of R-devel Digest, Vol 139, Issue 15
****************************************