OLD | NEW |
1 --- COMPILING | 1 --- COMPILING |
2 | 2 |
3 This project has begun being ported to Windows. A working solution | 3 This project has begun being ported to Windows. A working solution |
4 file exists in this directory: | 4 file exists in this directory: |
5 gperftools.sln | 5 google-perftools.sln |
6 | 6 |
7 You can load this solution file into VC++ 7.1 (Visual Studio 2003) or | 7 You can load this solution file into VC++ 7.1 (Visual Studio 2003) or |
8 later -- in the latter case, it will automatically convert the files | 8 later -- in the latter case, it will automatically convert the files |
9 to the latest format for you. | 9 to the latest format for you. |
10 | 10 |
11 When you build the solution, it will create a number of unittests, | 11 When you build the solution, it will create a number of unittests, |
12 which you can run by hand (or, more easily, under the Visual Studio | 12 which you can run by hand (or, more easily, under the Visual Studio |
13 debugger) to make sure everything is working properly on your system. | 13 debugger) to make sure everything is working properly on your system. |
14 The binaries will end up in a directory called "debug" or "release" in | 14 The binaries will end up in a directory called "debug" or "release" in |
15 the top-level directory (next to the .sln file). It will also create | 15 the top-level directory (next to the .sln file). It will also create |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
71 | 71 |
72 | 72 |
73 --- WIN64 | 73 --- WIN64 |
74 | 74 |
75 The function-patcher has to disassemble code, and is very | 75 The function-patcher has to disassemble code, and is very |
76 x86-specific. However, the rest of perftools should work fine for | 76 x86-specific. However, the rest of perftools should work fine for |
77 both x86 and x64. In particular, if you use the 'statically link with | 77 both x86 and x64. In particular, if you use the 'statically link with |
78 libc, and replace its malloc with tcmalloc' approach, mentioned above, | 78 libc, and replace its malloc with tcmalloc' approach, mentioned above, |
79 it should be possible to use tcmalloc with 64-bit windows. | 79 it should be possible to use tcmalloc with 64-bit windows. |
80 | 80 |
81 As of perftools 1.10, there is some support for disassembling x86_64 | |
82 instructions, for work with win64. This work is preliminary, but the | |
83 test file preamble_patcher_test.cc is provided to play around with | |
84 that a bit. preamble_patcher_test will not compile on win32. | |
85 | |
86 | 81 |
87 --- ISSUES | 82 --- ISSUES |
88 | 83 |
89 NOTE FOR WIN2K USERS: According to reports | 84 NOTE FOR WIN2K USERS: According to reports |
90 (http://code.google.com/p/gperftools/issues/detail?id=127) | 85 (http://code.google.com/p/google-perftools/issues/detail?id=127) |
91 the stack-tracing necessary for the heap-profiler does not work on | 86 the stack-tracing necessary for the heap-profiler does not work on |
92 Win2K. The best workaround is, if you are building on a Win2k system | 87 Win2K. The best workaround is, if you are building on a Win2k system |
93 is to add "/D NO_TCMALLOC_SAMPLES=" to your build, to turn off the | 88 is to add "/D NO_TCMALLOC_SAMPLES=" to your build, to turn off the |
94 stack-tracing. You will not be able to use the heap-profiler if you | 89 stack-tracing. You will not be able to use the heap-profiler if you |
95 do this. | 90 do this. |
96 | 91 |
97 NOTE ON _MSIZE and _RECALLOC: The tcmalloc version of _msize returns | 92 NOTE ON _MSIZE and _RECALLOC: The tcmalloc version of _msize returns |
98 the size of the region tcmalloc allocated for you -- which is at least | 93 the size of the region tcmalloc allocated for you -- which is at least |
99 as many bytes you asked for, but may be more. (btw, these *are* bytes | 94 as many bytes you asked for, but may be more. (btw, these *are* bytes |
100 you own, even if you didn't ask for all of them, so it's correct code | 95 you own, even if you didn't ask for all of them, so it's correct code |
101 to access all of them if you want.) Unfortunately, the Windows CRT | 96 to access all of them if you want.) Unfortunately, the Windows CRT |
102 _recalloc() routine assumes that _msize returns exactly as many bytes | 97 _recalloc() routine assumes that _msize returns exactly as many bytes |
103 as were requested. As a result, _recalloc() may not zero out new | 98 as were requested. As a result, _recalloc() may not zero out new |
104 bytes correctly. IT'S SAFEST NOT TO USE _RECALLOC WITH TCMALLOC. | 99 bytes correctly. IT'S SAFEST NOT TO USE _RECALLOC WITH TCMALLOC. |
105 _recalloc() is a tricky routine to use in any case (it's not safe to | 100 _recalloc() is a tricky routine to use in any case (it's not safe to |
106 use with realloc, for instance). | 101 use with realloc, for instance). |
107 | 102 |
108 | 103 |
109 I have little experience with Windows programming, so there may be | 104 I have little experience with Windows programming, so there may be |
110 better ways to set this up than I've done! If you run across any | 105 better ways to set this up than I've done! If you run across any |
111 problems, please post to the google-perftools Google Group, or report | 106 problems, please post to the google-perftools Google Group, or report |
112 them on the gperftools Google Code site: | 107 them on the google-perftools Google Code site: |
113 http://groups.google.com/group/google-perftools | 108 http://groups.google.com/group/google-perftools |
114 http://code.google.com/p/gperftools/issues/list | 109 http://code.google.com/p/google-perftools/issues/list |
115 | 110 |
116 -- craig | 111 -- craig |
117 | 112 |
118 Last modified: 2 February 2012 | 113 Last modified: 6 April 2011 |
OLD | NEW |