[R-SIG-Mac] profiling C shared libraries loaded into R

Simon Urbanek simon.urbanek at r-project.org
Sat Jun 13 01:27:23 CEST 2009


Michael,

On Jun 12, 2009, at 4:20 PM, Michael Braun wrote:

> Hi.  I have a shared library that I would like to profile.  I see  
> that this issue has been touched on in some previous posts, but I am  
> still having trouble, and I am hoping someone here can help.
>
> First things first...  I am running R 2.8.0 patched on OS X 10.5.7,  
> on a dual quad-core Mac Pro.   It is the 64-bit binary build for  
> Leopard, as downloaded from CRAN.
>
> I am compiling my code using gcc-4.2, and I am including the -g -p - 
> pg flags.

The -p -pg part (they are mutually-exclusive aren't they? so you get  
just -pg) won't really help unless you also compile R that way since  
the gprof initialization happens in the executable, not in the library  
(and don't forget it at link time).


>  Optimization is turned off (-O0).

Just to make sure - using PKG_CFLAGS doesn't have the desired effect,  
because R's -O2 will override it, so better be sure that the  
optimization is off. If you run the steps manually, make sure you have  
-g (and -pg if you wish) everywhere.


>  I AM able to debug the code using gdb (called as R -d gdb).  I  
> always run R from the command line.
>
> I have tried profiling using Shark, which recognizes functions in  
> libR.dylib, but none of the functions in mylib.so.  For each  
> function call, Shark refers to "Unknown Library", and after the  
> function address, there is an indicator of [unknown].  Also, when I  
> use Shark, it appears to want to profile the entire R session.  All  
> I care about is my library.
>

I'm unable to replicate that. Shark correctly recognizes the function  
and the loaded library for me. Try using default flags - they do  
include -g -O2 (which worked for me).


> I am also open to using gprof instead, but I cannot find the  
> requisite gmon.out file.
>

See above - you won't find it unless you compile R with -pg since the  
gprof init code must be in the executable (more precisely you don't  
have to re-compile the entire R with that, it should be sufficient to  
use -pg in the link step for exec/R).

Cheers,
Simon


> Thanks in advance for any suggestions.
>
> Michael
>
>
>
> -------------------------------------------
> Michael Braun
> Homer A. Burnell Career Development Professor, and
> 	Assistant Professor of Management Science (Marketing Group)
> MIT Sloan School of Management
> One Amherst St., E40-169
> Cambridge, MA 02142
> braunm at mit.edu
> 617-253-3436
>
> _______________________________________________
> R-SIG-Mac mailing list
> R-SIG-Mac at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>
>



More information about the R-SIG-Mac mailing list