blob: 708ec237ac4d710a1060bec59dc82a2579994ddb [file] [log] [blame]
Austin Schuh745610d2015-09-06 18:19:50 -07001* Get heap-profile-table.cc using DeleteMatchingFiles
2* Get heap-profile-table.cc using FillProcSelfMaps, DumpProcSelfMaps
3* Play around with ExperimentalGetStackTrace
4* Support the windows-level memory-allocation functions? See
5 /home/build/googleclient/earth/client/tools/memorytracking/client/memorytrace/src/memorytrace.cpp
6 /home/build/googleclient/total_recall/common/sitestep/*
7 http://www.internals.com/articles/apispy/apispy.htm
8 http://www.wheaty.net/APISPY32.zip
9* Verify /proc/xxx/maps:
10 http://www.geocities.com/wah_java_dotnet/procmap/index.html
11* Figure out how to edit the executable IAT so tcmalloc.dll is loaded first
12* Use QueryPerformanceCounter instead of GetTickCount() (also for sparsehash)
13
14----
15More info on windows-level memory-allocation functions:
16 C runtime malloc
17 LocalAlloc
18 GlobalAlloc
19 HeapAlloc
20 VirtualAlloc
21 mmap stuff
22
23malloc, LocalAlloc and GlobalAlloc call HeapAlloc, which calls
24VirtualAlloc when needed, which calls VirtualAllocEx (the __sbrk equiv?)
25
26siggi sez: If you want to do a generic job, you probably need to
27preserve the semantics of all of these Win32 calls:
28 Heap32First
29 Heap32ListFirst
30 Heap32ListNext
31 Heap32Next
32 HeapAlloc
33 HeapCompact
34 HeapCreate
35 HeapCreateTagsW
36 HeapDestroy
37 HeapExtend
38 HeapFree
39 HeapLock
40 HeapQueryInformation
41 HeapQueryTagW
42 HeapReAlloc
43 HeapSetInformation
44 HeapSize
45 HeapSummary
46 HeapUnlock
47 HeapUsage
48 HeapValidate
49 HeapWalk
50
51kernel32.dll export functions and nt.dll export functions:
52 http://www.shorthike.com/svn/trunk/tools_win32/dm/lib/kernel32.def
53 http://undocumented.ntinternals.net/
54
55You can edit the executable IAT to have the patching DLL be the
56first one loaded.
57
58Most complete way to intercept system calls is patch the functions
59(not the IAT).
60
61Microsoft has somee built-in routines for heap-checking:
62 http://support.microsoft.com/kb/268343
63
64----
65Itimer replacement:
66 http://msdn2.microsoft.com/en-us/library/ms712713.aspx
67
68----
69Changes I've had to make to the project file:
70
710) When creating the project file, click on "no autogenerated files"
72
73--- For each project:
741) Alt-F7 -> General -> [pulldown "all configurations" ] -> Output Directory -> $(SolutionDir)$(ConfigurationName)
752) Alt-F7 -> General -> [pulldown "all configurations" ] -> Intermediate Directory -> $(ConfigurationName)
76
77--- For each .cc file:
781) Alt-F7 -> C/C++ -> General -> [pulldown "all configurations"] -> Additional Include Directives --> src/windows + src/
792) Alt-F7 -> C/C++ -> Code Generation -> Runtime Library -> Multi-threaded, debug/release, DLL or not
80
81--- For DLL:
823) Alt-F7 -> Linker -> Input -> [pulldown "all configurations" ] -> Module Definition File -> src\windows\vc7and8.def
83--- For binaries depending on a DLL:
843) Right-click on project -> Project Dependencies -> [add dll]
85--- For static binaries (not depending on a DLL)
863) Alt-F7 -> C/C++ -> Command Line -> [pulldown "all configurations"] -> /D PERFTOOLS_DLL_DECL=