DYLIBPROF(1) General Commands Manual DYLIBPROF(1)NAME
dylibprof - control the shared pc sampling of a dynamic shared library
SYNOPSIS
dylibprof [-e | -d] | [-c | -r | -b | -h | -p [-o <file>] <dylib>]
DESCRIPTION
Dylibprof along with the server /usr/libexec/profileServer allows shared program counter sampling of a dynamic shared library across all
the programs that use the library.
To use dylibprof(1), /usr/libexec/profileServer must be running. So first start /usr/libexec/profileServer and leave it running in the
back ground:
% /usr/libexec/profileServer >& /dev/console &
/usr/libexec/profileServer starts up with shared pc sampling disabled. It should not be left running with shared pc sampling enabled if no
sampling is being done as every launch of a program that uses the dynamic linker is effected. This is true even to a small extent if there
no libraries being sampled.
If you need to profile from boot up for all processes then the following line can be added to /etc/bootstrap.conf:
server "/usr/libexec/profileServer" services NSProfileServer NSProfileControl;
Before any dynamic shared library can be sampled sampling must be enabled as
follows:
% dylibprof -e
It can then later be disabled when no more sampling is to be done with:
% dylibprof -d
EXAMPLE
To sample the dynamic shared library /System/Library/Frameworks/System.framework/Versions/B/System for example requires the following
steps. First create a sample buffer for the library:
% dylibprof -c /System/Library/Frameworks/System.framework/Versions/B/System
Then begin the sampling:
% dylibprof -b /System/Library/Frameworks/System.framework/Versions/B/System
After this programs launched using this library will be part of the shared pc sampling. Typically what would be done is to then use the
system normally for a number of hours.
Then to halt the sampling:
% dylibprof -h /System/Library/Frameworks/System.framework/Versions/B/System
The profiling output file (a gmon.out file) can be created with:
% dylibprof -p -o /tmp/gmon.out /System/Library/Frameworks/System.framework/Versions/B/System
Using the profiling output file and the library a profile listing and a time based order file (time.order) can be created with: gprof(1):
% gprof -S /System/Library/Frameworks/System.framework/Versions/B/System /tmp/gmon.out
When no more sampling for this library is to be done the sample buffer can be
removed with:
% dylibprof -r /System/Library/Frameworks/System.framework/Versions/B/System
The options are:
-e Enable shared program counter sampling for dynamic libraries.
-d Disable shared program counter sampling for dynamic libraries.
-c Create a pc sample buffer for the library.
-b Begin sampling for programs subsequently launched using the library.
-h Halt sampling for programs subsequently launched using the library.
-p Produce a profiling output file (a gmon.out file) for the library.
-r Remove the pc sample buffer for the library.
-o name
Use the file name instead of gmon.out when producing the profiling output file with the -p above.
FILES
gmon.out profile output file
/var/tmp/profile/profile.XXXXXX the sample buffer file
SEE ALSO gprof(1)Apple Computer, Inc. March 19, 2002 DYLIBPROF(1)
Check Out this Related Man Page
CMPDYLIB(1) General Commands Manual CMPDYLIB(1)NAME
cmpdylib - compare two dynamic shared libraries for compatibility
SYNOPSIS
cmpdylib oldLibrary newLibrary
DESCRIPTION
cmpdylib compares two versions of a dynamic shared library to see if they are compatible with each other. If the two versions are incompat-
ible, the reason is printed to stdout, and the exit status is nonzero. If they are compatible, nothing is printed, and the exit status is
zero.
To see if the two versions are compatible, cmpdylib first verifies that newLibrary was built for all of the architectures that oldLibrary
was built for. If so, for each architecture, it checks to see if the global symbols defined in oldLibrary are still defined in newLibrary.
It then looks for new symbols, symbols defined in newLibrary that are not defined in oldLibrary. If it finds new symbols, it compares the
compatibility version numbers of the two libraries. If the compatibility version number of newLibrary is greater than oldLibrary, the
libraries are still compatible. If the compatibility version number is the same or less, the libraries are incompatible.
OPTIONS
oldLibrary
The older version of the library.
newLibrary
The newer version of the library.
EXAMPLES
This example shows the result of performing cmpdylib on two incompatible versions of the Foundation library. As stated, the versions are
incompatible because the newer version was not built for the ppc architecture.
cmpdylib /System/Library/Frameworks/Foundation.framework/Foundation Foundation_proj/Foundation
cmpdylib: file: Foundation_proj/Foundation does not contain architecture: ppc
cmpdylib: new dynamic shared library: Foundation_proj/Foundation does not contain architecture ppc
DIAGNOSTICS
The exit status is zero if the library versions are compatible and nonzero if they are incompatible.
BUGS
There are lots of other things that could be checked for that are not (such as the Objective C API).
Apple Computer, Inc. November 3, 1997 CMPDYLIB(1)