// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Functions used to debug memory usage, leaks, and other memory issues. // All methods are effectively no-ops unless this program is being run through // a supported memory tool (currently, only Purify) #ifndef BASE_MEMORY_MEMORY_DEBUG_H_ #define BASE_MEMORY_MEMORY_DEBUG_H_ #pragma once #include "base/base_api.h" #include "base/basictypes.h" namespace base { class BASE_API MemoryDebug { public: // Since MIU messages are a lot of data, and we don't always want this data, // we have a global switch. If disabled, *MemoryInUse are no-ops. static void SetMemoryInUseEnabled(bool enabled); // Dump information about all memory in use. static void DumpAllMemoryInUse(); // Dump information about new memory in use since the last // call to DumpAllMemoryInUse() or DumpNewMemoryInUse(). static void DumpNewMemoryInUse(); // Dump information about all current memory leaks. static void DumpAllLeaks(); // Dump information about new memory leaks since the last // call to DumpAllLeaks() or DumpNewLeaks() static void DumpNewLeaks(); // Mark |size| bytes of memory as initialized, so it doesn't produce any UMRs // or UMCs. static void MarkAsInitialized(void* addr, size_t size); private: static bool memory_in_use_; DISALLOW_IMPLICIT_CONSTRUCTORS(MemoryDebug); }; } // namespace base #endif // BASE_MEMORY_MEMORY_DEBUG_H_