summaryrefslogtreecommitdiff
path: root/INSTALL
diff options
context:
space:
mode:
authorcsilvers <csilvers@6b5cf1ce-ec42-a296-1ba9-69fdba395a50>2009-03-11 20:50:03 +0000
committercsilvers <csilvers@6b5cf1ce-ec42-a296-1ba9-69fdba395a50>2009-03-11 20:50:03 +0000
commitedd03a831f350bc72d76d4fad2b390d43faccb79 (patch)
tree6985cbaa35ce40f51386a7757de308452641cc21 /INSTALL
parentc75de4d1e91c339fb5142a8a21be8b3ba5224ef7 (diff)
downloadgperftools-edd03a831f350bc72d76d4fad2b390d43faccb79.tar.gz
Wed Mar 11 11:25:34 2009 Google Inc. <opensource@google.com>
* google-perftools: version 1.1 release * Dynamically resize thread caches -- nice perf. improvement (kash) * Add VDSO support to give better stacktraces in linux (ppluzhnikov) * Improve heap-profiling sampling algorithm (ford) * Rewrite leak-checking code: should be faster and more robust (sanjay) * Use ps2 instead of ps for dot: better page cropping for gv (csilvers) * Disable malloc-failure warning messages by default (csilvers) * Update config/Makefile to disable tests on a per-OS basis (csilvers) * PORTING: Get perftools compiling under MSVC 7.1 again (csilvers) * PORTING: Get perftools compiling under cygwin again (csilvers) * PORTING: automatically set library flags for solaris x86 (csilvers) * Add TCMALLOC_SKIP_SBRK to mirror TCMALLOC_SKIP_MMAP (csilvers) * Add --enable flags to allow selective building (csilvers) * Put addr2line-pdb and nm-pdb in proper output directory (csilvers) * Remove deprecated DisableChecksIn (sanjay) * DOCUMENTATION: Document most MallocExtension routines (csilvers) git-svn-id: http://gperftools.googlecode.com/svn/trunk@66 6b5cf1ce-ec42-a296-1ba9-69fdba395a50
Diffstat (limited to 'INSTALL')
-rw-r--r--INSTALL48
1 files changed, 32 insertions, 16 deletions
diff --git a/INSTALL b/INSTALL
index 039d383..40a0349 100644
--- a/INSTALL
+++ b/INSTALL
@@ -23,8 +23,10 @@ perftools. libunwind can be found at
http://download.savannah.nongnu.org/releases/libunwind/libunwind-snap-070410.tar.gz
-Even if you already have libunwind installed, you will probably still
-need to install from the snapshot to get the latest version.
+Even if you already have libunwind installed, you should check the
+version. Versions older than this will not work properly; too-new
+versions introduce new code that does not work well with perftools
+(because libunwind can call malloc, which will lead to deadlock).
CAUTION: if you install libunwind from the url above, be aware that
you may have trouble if you try to statically link your binary with
@@ -57,6 +59,11 @@ Even with the use of libunwind, there are still known problems with
stack unwinding on 64-bit systems, particularly x86-64. See the
"64-BIT ISSUES" section in README.
+If you encounter problems, try compiling perftools with './configure
+--enable-frame-pointer'. Note you will need to compile your
+application with frame pointers (via 'gcc -fno-omit-frame-pointer
+...') in this case.
+
*** NOTE FOR ___tls_get_addr ERROR
@@ -111,7 +118,9 @@ tested (though see 64-bit notes above). Portions of perftools work on
the other systems. The basic memory-allocation library,
tcmalloc_minimal, works on all systems. The cpu-profiler also works
fairly widely. However, the heap-profiler and heap-checker are not
-yet as widely supported.
+yet as widely supported. In general, the 'configure' script will
+detect what OS you are building for, and only build the components
+that work on that OS.
Note that tcmalloc_minimal is perfectly usable as a malloc/new
replacement, so it is possible to use tcmalloc on all the systems
@@ -130,7 +139,7 @@ above, by linking in libtcmalloc_minimal.
% ./tcmalloc_minimal_unittest # to run this test
% [etc] # to run other tests
- Two caveats: first, frag_unittest tries to allocate 400M of memory,
+ Three caveats: first, frag_unittest tries to allocate 400M of memory,
and if you have less virtual memory on your system, the test may
fail with a bad_alloc exception.
@@ -141,6 +150,11 @@ above, by linking in libtcmalloc_minimal.
is working fine. This only affects programs that call fork(); for
most programs, the cpu profiler is entirely safe to use.
+ Third, perftools depends on /proc to get shared library
+ information. If you are running a FreeBSD system without proc,
+ perftools will not be able to map addresses to functions. Some
+ unittests will fail as a result.
+
libtcmalloc.so successfully builds, and the "advanced" tcmalloc
functionality all works except for the leak-checker, which has
Linux-specific code:
@@ -150,6 +164,10 @@ above, by linking in libtcmalloc_minimal.
% make -k heap-checker_unittest.sh \
heap-checker-death_unittest.sh # THESE DO NOT
+ Note that unless you specify --enable-heap-checker explicitly,
+ 'make' will not build the heap-checker unittests on a FreeBSD
+ system.
+
I have not tested other *BSD systems, but they are probably similar.
** Mac OS X:
@@ -169,11 +187,9 @@ above, by linking in libtcmalloc_minimal.
I've only tested using the GNU C++ compiler, not the Sun C++
compiler. Using g++ requires setting the PATH appropriately when
- configuring. As another issue, Solaris 10 has a bug (see
- src/solaris/libstdc++.la for more info), which we work around by
- adding a custom LDFLAGS argument:
+ configuring.
- % PATH=${PATH}:/usr/sfw/bin/:/usr/ccs/bin ./configure LDFLAGS="-Lsrc/solaris -lrt"
+ % PATH=${PATH}:/usr/sfw/bin/:/usr/ccs/bin ./configure
% PATH=${PATH}:/usr/sfw/bin/:/usr/ccs/bin make [...]
Again, the binaries and libraries that successfully build are
@@ -193,9 +209,10 @@ above, by linking in libtcmalloc_minimal.
all. But as in other ports, the basic tcmalloc library
functionality, overriding malloc and new and such (and even
windows-specific functions like _aligned_malloc!), is working fine,
- at least with VC++ 8.0 (Visual Studio 2005), in both debug and
- release modes. See README.windows for instructions on how to
- install on Windows using Visual Studio.
+ at least with VC++ 7.1 (Visual Studio 2003) and VC++ 8.0
+ (Visual Studio 2005), in both debug and release modes. See
+ README.windows for instructions on how to install on Windows using
+ Visual Studio.
Cygwin can compile some but not all of perftools. Furthermore,
there is a problem with exception-unwinding in cygwin (it can call
@@ -204,13 +221,12 @@ above, by linking in libtcmalloc_minimal.
exception unwinding problem, but it only works in debug mode. I
hope to have a more proper fix in a later release. To configure
under cygwin, run
- ./configure CXXFLAGS=-g && make -k
+ ./configure CXXFLAGS=-g && make
Most of cygwin will compile (cygwin doesn't allow weak symbols, so
the heap-checker and a few other pieces of functionality will not
- compile). 'make -k' will compile those libraries and tests that
- can be compiled. You can run
- ./tcmalloc_minimal_unittest
- to make sure the basic functionality is working.
+ compile). 'make' will compile those libraries and tests that can
+ be compiled. You can run 'make check' to make sure the basic
+ functionality is working.
This Windows functionality is also available using MinGW and Msys,
In this case, you can use the regular './configure && make'