OLD | NEW |
1 Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software | 1 Copyright 1994, 1995, 1996, 1999, 2000, 2001, 2002 Free Software |
2 Foundation, Inc. | 2 Foundation, Inc. |
3 | 3 |
4 This file is free documentation; the Free Software Foundation gives | 4 This file is free documentation; the Free Software Foundation gives |
5 unlimited permission to copy, distribute and modify it. | 5 unlimited permission to copy, distribute and modify it. |
6 | 6 |
7 | 7 |
8 Perftools-Specific Install Notes | 8 Perftools-Specific Install Notes |
9 ================================ | 9 ================================ |
10 | 10 |
11 *** NOTE FOR 64-BIT LINUX SYSTEMS | 11 *** NOTE FOR 64-BIT LINUX SYSTEMS |
12 | 12 |
13 The glibc built-in stack-unwinder on 64-bit systems has some problems | 13 The glibc built-in stack-unwinder on 64-bit systems has some problems |
14 with the perftools libraries. (In particular, the cpu/heap profiler | 14 with the perftools libraries. (In particular, the cpu/heap profiler |
15 may be in the middle of malloc, holding some malloc-related locks when | 15 may be in the middle of malloc, holding some malloc-related locks when |
16 they invoke the stack unwinder. The built-in stack unwinder may call | 16 they invoke the stack unwinder. The built-in stack unwinder may call |
17 malloc recursively, which may require the thread to acquire a lock it | 17 malloc recursively, which may require the thread to acquire a lock it |
18 already holds: deadlock.) | 18 already holds: deadlock.) |
19 | 19 |
20 For that reason, if you use a 64-bit system, we strongly recommend you | 20 For that reason, if you use a 64-bit system, we strongly recommend you |
21 install libunwind before trying to configure or install gperftools. | 21 install libunwind before trying to configure or install google |
22 libunwind can be found at | 22 perftools. libunwind can be found at |
23 | 23 |
24 http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-beta.tar.g
z | 24 http://download.savannah.gnu.org/releases/libunwind/libunwind-0.99-beta.tar.g
z |
25 | 25 |
26 Even if you already have libunwind installed, you should check the | 26 Even if you already have libunwind installed, you should check the |
27 version. Versions older than this will not work properly; too-new | 27 version. Versions older than this will not work properly; too-new |
28 versions introduce new code that does not work well with perftools | 28 versions introduce new code that does not work well with perftools |
29 (because libunwind can call malloc, which will lead to deadlock). | 29 (because libunwind can call malloc, which will lead to deadlock). |
30 | 30 |
31 There have been reports of crashes with libunwind 0.99 (see | 31 CAUTION: if you install libunwind from the url above, be aware that |
32 http://code.google.com/p/gperftools/issues/detail?id=374). | 32 you may have trouble if you try to statically link your binary with |
33 Alternately, you can use a more recent libunwind (e.g. 1.0.1) at the | 33 perftools: that is, if you link with 'gcc -static -lgcc_eh ...'. This |
34 cost of adding a bit of boilerplate to your code. For details, see | 34 is because both libunwind and libgcc implement the same C++ exception |
35 http://groups.google.com/group/google-perftools/msg/2686d9f24ac4365f | 35 handling APIs, but they implement them differently on some platforms. |
| 36 This is not likely to be a problem on ia64, but may be on x86-64. |
36 | 37 |
37 CAUTION: if you install libunwind from the url above, be aware that | 38 Also, if you link binaries statically, make sure that you add |
38 you may have trouble if you try to statically link your binary with | 39 -Wl,--eh-frame-hdr to your linker options. This is required so that |
39 perftools: that is, if you link with 'gcc -static -lgcc_eh ...'. | 40 libunwind can find the information generated by the compiler required |
40 This is because both libunwind and libgcc implement the same C++ | 41 for stack unwinding. |
41 exception handling APIs, but they implement them differently on | |
42 some platforms. This is not likely to be a problem on ia64, but | |
43 may be on x86-64. | |
44 | 42 |
45 Also, if you link binaries statically, make sure that you add | 43 Using -static is rare, though, so unless you know this will affect you |
46 -Wl,--eh-frame-hdr to your linker options. This is required so that | 44 it probably won't. |
47 libunwind can find the information generated by the compiler | |
48 required for stack unwinding. | |
49 | |
50 Using -static is rare, though, so unless you know this will affect | |
51 you it probably won't. | |
52 | 45 |
53 If you cannot or do not wish to install libunwind, you can still try | 46 If you cannot or do not wish to install libunwind, you can still try |
54 to use the built-in stack unwinder. The built-in stack unwinder | 47 to use the built-in stack unwinder. The built-in stack unwinder |
55 requires that your application, the tcmalloc library, and system | 48 requires that your application, the tcmalloc library, and system |
56 libraries like libc, all be compiled with a frame pointer. This is | 49 libraries like libc, all be compiled with a frame pointer. This is |
57 *not* the default for x86-64. | 50 *not* the default for x86-64. |
58 | 51 |
59 If you are on x86-64 system, know that you have a set of system | 52 If you are on x86-64 system, know that you have a set of system |
60 libraries with frame-pointers enabled, and compile all your | 53 libraries with frame-pointers enabled, and compile all your |
61 applications with -fno-omit-frame-pointer, then you can enable the | 54 applications with -fno-omit-frame-pointer, then you can enable the |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 asking for trouble in any case: some data will be allocated with one | 130 asking for trouble in any case: some data will be allocated with one |
138 malloc, some with another. If, for some reason, you *do* need to use | 131 malloc, some with another. If, for some reason, you *do* need to use |
139 dlopen on tcmalloc, the easiest way is to use a version of tcmalloc | 132 dlopen on tcmalloc, the easiest way is to use a version of tcmalloc |
140 with TLS turned off; see the ___tls_get_addr note above. | 133 with TLS turned off; see the ___tls_get_addr note above. |
141 | 134 |
142 | 135 |
143 *** COMPILING ON NON-LINUX SYSTEMS | 136 *** COMPILING ON NON-LINUX SYSTEMS |
144 | 137 |
145 Perftools has been tested on the following systems: | 138 Perftools has been tested on the following systems: |
146 FreeBSD 6.0 (x86) | 139 FreeBSD 6.0 (x86) |
147 FreeBSD 8.1 (x86_64) | |
148 Linux CentOS 5.5 (x86_64) | |
149 Linux Debian 4.0 (PPC) | |
150 Linux Debian 5.0 (x86) | |
151 Linux Fedora Core 3 (x86) | 140 Linux Fedora Core 3 (x86) |
152 Linux Fedora Core 4 (x86) | 141 Linux Fedora Core 4 (x86) |
153 Linux Fedora Core 5 (x86) | 142 Linux Fedora Core 5 (x86) |
154 Linux Fedora Core 6 (x86) | 143 Linux Fedora Core 6 (x86) |
155 Linux Fedora Core 13 (x86_64) | |
156 Linux Fedora Core 14 (x86_64) | |
157 Linux RedHat 9 (x86) | |
158 Linux Slackware 13 (x86_64) | |
159 Linux Ubuntu 6.06.1 (x86) | 144 Linux Ubuntu 6.06.1 (x86) |
160 Linux Ubuntu 6.06.1 (x86_64) | 145 Linux Ubuntu 6.06.1 (x86_64) |
161 Linux Ubuntu 10.04 (x86) | 146 Linux RedHat 9 (x86) |
162 Linux Ubuntu 10.10 (x86_64) | 147 Linux Debian 4.0 (PPC) |
163 Mac OS X 10.3.9 (Panther) (PowerPC) | 148 Mac OS X 10.3.9 (Panther) (PowerPC) |
164 Mac OS X 10.4.8 (Tiger) (PowerPC) | 149 Mac OS X 10.4.8 (Tiger) (PowerPC) |
165 Mac OS X 10.4.8 (Tiger) (x86) | 150 Mac OS X 10.4.8 (Tiger) (x86) |
166 Mac OS X 10.5 (Leopard) (x86) | 151 Mac OS X 10.5 (Leopard) (x86) |
167 Mac OS X 10.6 (Snow Leopard) (x86) | 152 Solaris 10 (x86) |
168 Solaris 10 (x86_64) | 153 Windows XP, Visual Studio 2003 (VC++ 7) (x86) |
169 Windows XP, Visual Studio 2003 (VC++ 7.1) (x86) | |
170 Windows XP, Visual Studio 2005 (VC++ 8) (x86) | 154 Windows XP, Visual Studio 2005 (VC++ 8) (x86) |
171 Windows XP, Visual Studio 2005 (VC++ 9) (x86) | |
172 Windows XP, Visual Studio 2005 (VC++ 10) (x86) | |
173 Windows XP, MinGW 5.1.3 (x86) | 155 Windows XP, MinGW 5.1.3 (x86) |
174 Windows XP, Cygwin 5.1 (x86) | 156 Windows XP, Cygwin 5.1 (x86) |
175 | 157 |
176 It works in its full generality on the Linux systems | 158 It works in its full generality on the Linux systems |
177 tested (though see 64-bit notes above). Portions of perftools work on | 159 tested (though see 64-bit notes above). Portions of perftools work on |
178 the other systems. The basic memory-allocation library, | 160 the other systems. The basic memory-allocation library, |
179 tcmalloc_minimal, works on all systems. The cpu-profiler also works | 161 tcmalloc_minimal, works on all systems. The cpu-profiler also works |
180 fairly widely. However, the heap-profiler and heap-checker are not | 162 fairly widely. However, the heap-profiler and heap-checker are not |
181 yet as widely supported. In general, the 'configure' script will | 163 yet as widely supported. In general, the 'configure' script will |
182 detect what OS you are building for, and only build the components | 164 detect what OS you are building for, and only build the components |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
270 % PATH=${PATH}:/usr/sfw/bin/:/usr/ccs/bin make [...] | 252 % PATH=${PATH}:/usr/sfw/bin/:/usr/ccs/bin make [...] |
271 | 253 |
272 Again, the binaries and libraries that successfully build are | 254 Again, the binaries and libraries that successfully build are |
273 exactly the same as for FreeBSD. (However, while libprofiler.so can | 255 exactly the same as for FreeBSD. (However, while libprofiler.so can |
274 be used to generate profiles, pprof is not very successful at | 256 be used to generate profiles, pprof is not very successful at |
275 reading them -- necessary helper programs like nm don't seem | 257 reading them -- necessary helper programs like nm don't seem |
276 to be installed by default on Solaris, or perhaps are only | 258 to be installed by default on Solaris, or perhaps are only |
277 installed as part of the Sun C++ compiler package.) See that | 259 installed as part of the Sun C++ compiler package.) See that |
278 section for a list of binaries, and instructions on building them. | 260 section for a list of binaries, and instructions on building them. |
279 | 261 |
280 ** Windows (MSVC, Cygwin, and MinGW): | 262 ** Windows: |
281 | 263 |
282 Work on Windows is rather preliminary: we haven't found a good way | 264 Work on Windows is rather preliminary: we haven't found a good way |
283 to get stack traces in release mode on windows (that is, when FPO | 265 to get stack traces in release mode on windows (that is, when FPO |
284 is enabled), so the heap profiling may not be reliable in that | 266 is enabled), so the heap profiling may not be reliable in that |
285 case. Also, heap-checking and CPU profiling do not yet work at | 267 case. Also, heap-checking and CPU profiling do not yet work at |
286 all. But as in other ports, the basic tcmalloc library | 268 all. But as in other ports, the basic tcmalloc library |
287 functionality, overriding malloc and new and such (and even | 269 functionality, overriding malloc and new and such (and even |
288 windows-specific functions like _aligned_malloc!), is working fine, | 270 windows-specific functions like _aligned_malloc!), is working fine, |
289 at least with VC++ 7.1 (Visual Studio 2003) through VC++ 10.0, | 271 at least with VC++ 7.1 (Visual Studio 2003) and VC++ 8.0 |
290 in both debug and release modes. See README.windows for | 272 (Visual Studio 2005), in both debug and release modes. See |
291 instructions on how to install on Windows using Visual Studio. | 273 README.windows for instructions on how to install on Windows using |
| 274 Visual Studio. |
292 | 275 |
293 Cygwin can compile some but not all of perftools. Furthermore, | 276 Cygwin can compile some but not all of perftools. Furthermore, |
294 there is a problem with exception-unwinding in cygwin (it can call | 277 there is a problem with exception-unwinding in cygwin (it can call |
295 malloc, which can call the exception-unwinding-setup code, which | 278 malloc, which can call the exception-unwinding-setup code, which |
296 can lead to an infinite loop). I've comitted a workaround to the | 279 can lead to an infinite loop). I've comitted a workaround to the |
297 exception unwinding problem, but it only works in debug mode and | 280 exception unwinding problem, but it only works in debug mode and |
298 when statically linking in tcmalloc. I hope to have a more proper | 281 when statically linking in tcmalloc. I hope to have a more proper |
299 fix in a later release. To configure under cygwin, run | 282 fix in a later release. To configure under cygwin, run |
300 | 283 |
301 ./configure --disable-shared CXXFLAGS=-g && make | 284 ./configure --disable-shared CXXFLAGS=-g && make |
(...skipping 228 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
530 Do not print messages saying which checks are being made. To | 513 Do not print messages saying which checks are being made. To |
531 suppress all normal output, redirect it to `/dev/null' (any error | 514 suppress all normal output, redirect it to `/dev/null' (any error |
532 messages will still be shown). | 515 messages will still be shown). |
533 | 516 |
534 `--srcdir=DIR' | 517 `--srcdir=DIR' |
535 Look for the package's source code in directory DIR. Usually | 518 Look for the package's source code in directory DIR. Usually |
536 `configure' can determine that directory automatically. | 519 `configure' can determine that directory automatically. |
537 | 520 |
538 `configure' also accepts some other, not widely useful, options. Run | 521 `configure' also accepts some other, not widely useful, options. Run |
539 `configure --help' for more details. | 522 `configure --help' for more details. |
OLD | NEW |