Simon:

Thanks for your suggestion. I recompiled R 2.9.0, including the -g and -pg flags everywhere. I still do not see a gmon.out file in my working directory. And now, Shark crashes as soon as it start analyzing the samples. This occurs with any R job, not just my own shared lib.

Is there a way I can look after the fact to see if R was compiled correctly to support profiling?

Thanks,

Michael




On Jun 12, 2009, at 7:27 PM, Simon Urbanek wrote:

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
bra...@mit.edu
617-253-3436

_______________________________________________
R-SIG-Mac mailing list
R-SIG-Mac@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-mac




-------------------------------------------
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
bra...@mit.edu
617-253-3436

_______________________________________________
R-SIG-Mac mailing list
R-SIG-Mac@stat.math.ethz.ch
https://stat.ethz.ch/mailman/listinfo/r-sig-mac

Reply via email to