1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // Functions used to debug memory usage, leaks, and other memory issues. 6 // All methods are effectively no-ops unless this program is being run through 7 // a supported memory tool (currently, only Purify) 8 9 #ifndef BASE_MEMORY_MEMORY_DEBUG_H_ 10 #define BASE_MEMORY_MEMORY_DEBUG_H_ 11 #pragma once 12 13 #include "base/base_api.h" 14 #include "base/basictypes.h" 15 16 namespace base { 17 18 class BASE_API MemoryDebug { 19 public: 20 // Since MIU messages are a lot of data, and we don't always want this data, 21 // we have a global switch. If disabled, *MemoryInUse are no-ops. 22 static void SetMemoryInUseEnabled(bool enabled); 23 24 // Dump information about all memory in use. 25 static void DumpAllMemoryInUse(); 26 // Dump information about new memory in use since the last 27 // call to DumpAllMemoryInUse() or DumpNewMemoryInUse(). 28 static void DumpNewMemoryInUse(); 29 30 // Dump information about all current memory leaks. 31 static void DumpAllLeaks(); 32 // Dump information about new memory leaks since the last 33 // call to DumpAllLeaks() or DumpNewLeaks() 34 static void DumpNewLeaks(); 35 36 // Mark |size| bytes of memory as initialized, so it doesn't produce any UMRs 37 // or UMCs. 38 static void MarkAsInitialized(void* addr, size_t size); 39 40 private: 41 static bool memory_in_use_; 42 43 DISALLOW_IMPLICIT_CONSTRUCTORS(MemoryDebug); 44 }; 45 46 } // namespace base 47 48 #endif // BASE_MEMORY_MEMORY_DEBUG_H_ 49