drop obsolete src/windows/TODO
This commit is contained in:
parent
8a147b4833
commit
57d6ecc4ae
|
@ -1,86 +0,0 @@
|
||||||
* Get heap-profile-table.cc using DeleteMatchingFiles
|
|
||||||
* Get heap-profile-table.cc using FillProcSelfMaps, DumpProcSelfMaps
|
|
||||||
* Play around with ExperimentalGetStackTrace
|
|
||||||
* Support the windows-level memory-allocation functions? See
|
|
||||||
/home/build/googleclient/earth/client/tools/memorytracking/client/memorytrace/src/memorytrace.cpp
|
|
||||||
/home/build/googleclient/total_recall/common/sitestep/*
|
|
||||||
http://www.internals.com/articles/apispy/apispy.htm
|
|
||||||
http://www.wheaty.net/APISPY32.zip
|
|
||||||
* Verify /proc/xxx/maps:
|
|
||||||
http://www.geocities.com/wah_java_dotnet/procmap/index.html
|
|
||||||
* Figure out how to edit the executable IAT so tcmalloc.dll is loaded first
|
|
||||||
* Use QueryPerformanceCounter instead of GetTickCount() (also for sparsehash)
|
|
||||||
|
|
||||||
----
|
|
||||||
More info on windows-level memory-allocation functions:
|
|
||||||
C runtime malloc
|
|
||||||
LocalAlloc
|
|
||||||
GlobalAlloc
|
|
||||||
HeapAlloc
|
|
||||||
VirtualAlloc
|
|
||||||
mmap stuff
|
|
||||||
|
|
||||||
malloc, LocalAlloc and GlobalAlloc call HeapAlloc, which calls
|
|
||||||
VirtualAlloc when needed, which calls VirtualAllocEx (the __sbrk equiv?)
|
|
||||||
|
|
||||||
siggi sez: If you want to do a generic job, you probably need to
|
|
||||||
preserve the semantics of all of these Win32 calls:
|
|
||||||
Heap32First
|
|
||||||
Heap32ListFirst
|
|
||||||
Heap32ListNext
|
|
||||||
Heap32Next
|
|
||||||
HeapAlloc
|
|
||||||
HeapCompact
|
|
||||||
HeapCreate
|
|
||||||
HeapCreateTagsW
|
|
||||||
HeapDestroy
|
|
||||||
HeapExtend
|
|
||||||
HeapFree
|
|
||||||
HeapLock
|
|
||||||
HeapQueryInformation
|
|
||||||
HeapQueryTagW
|
|
||||||
HeapReAlloc
|
|
||||||
HeapSetInformation
|
|
||||||
HeapSize
|
|
||||||
HeapSummary
|
|
||||||
HeapUnlock
|
|
||||||
HeapUsage
|
|
||||||
HeapValidate
|
|
||||||
HeapWalk
|
|
||||||
|
|
||||||
kernel32.dll export functions and nt.dll export functions:
|
|
||||||
http://www.shorthike.com/svn/trunk/tools_win32/dm/lib/kernel32.def
|
|
||||||
http://undocumented.ntinternals.net/
|
|
||||||
|
|
||||||
You can edit the executable IAT to have the patching DLL be the
|
|
||||||
first one loaded.
|
|
||||||
|
|
||||||
Most complete way to intercept system calls is patch the functions
|
|
||||||
(not the IAT).
|
|
||||||
|
|
||||||
Microsoft has somee built-in routines for heap-checking:
|
|
||||||
http://support.microsoft.com/kb/268343
|
|
||||||
|
|
||||||
----
|
|
||||||
Itimer replacement:
|
|
||||||
http://msdn2.microsoft.com/en-us/library/ms712713.aspx
|
|
||||||
|
|
||||||
----
|
|
||||||
Changes I've had to make to the project file:
|
|
||||||
|
|
||||||
0) When creating the project file, click on "no autogenerated files"
|
|
||||||
|
|
||||||
--- For each project:
|
|
||||||
1) Alt-F7 -> General -> [pulldown "all configurations" ] -> Output Directory -> $(SolutionDir)$(ConfigurationName)
|
|
||||||
2) Alt-F7 -> General -> [pulldown "all configurations" ] -> Intermediate Directory -> $(ConfigurationName)
|
|
||||||
|
|
||||||
--- For each .cc file:
|
|
||||||
1) Alt-F7 -> C/C++ -> General -> [pulldown "all configurations"] -> Additional Include Directives --> src/windows + src/
|
|
||||||
2) Alt-F7 -> C/C++ -> Code Generation -> Runtime Library -> Multi-threaded, debug/release, DLL or not
|
|
||||||
|
|
||||||
--- For DLL:
|
|
||||||
3) Alt-F7 -> Linker -> Input -> [pulldown "all configurations" ] -> Module Definition File -> src\windows\vc7and8.def
|
|
||||||
--- For binaries depending on a DLL:
|
|
||||||
3) Right-click on project -> Project Dependencies -> [add dll]
|
|
||||||
--- For static binaries (not depending on a DLL)
|
|
||||||
3) Alt-F7 -> C/C++ -> Command Line -> [pulldown "all configurations"] -> /D PERFTOOLS_DLL_DECL=
|
|
Loading…
Reference in New Issue