Home | History | Annotate | Download | only in base
      1 // Copyright (c) 2006-2008 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_DEBUG_H_
     10 #define BASE_MEMORY_DEBUG_H_
     11 
     12 #include "base/basictypes.h"
     13 
     14 namespace base {
     15 
     16 class MemoryDebug {
     17  public:
     18   // Since MIU messages are a lot of data, and we don't always want this data,
     19   // we have a global switch.  If disabled, *MemoryInUse are no-ops.
     20   static void SetMemoryInUseEnabled(bool enabled);
     21 
     22   // Dump information about all memory in use.
     23   static void DumpAllMemoryInUse();
     24   // Dump information about new memory in use since the last
     25   // call to DumpAllMemoryInUse() or DumpNewMemoryInUse().
     26   static void DumpNewMemoryInUse();
     27 
     28   // Dump information about all current memory leaks.
     29   static void DumpAllLeaks();
     30   // Dump information about new memory leaks since the last
     31   // call to DumpAllLeaks() or DumpNewLeaks()
     32   static void DumpNewLeaks();
     33 
     34   // Mark |size| bytes of memory as initialized, so it doesn't produce any UMRs
     35   // or UMCs.
     36   static void MarkAsInitialized(void* addr, size_t size);
     37 
     38  private:
     39   static bool memory_in_use_;
     40 
     41   DISALLOW_IMPLICIT_CONSTRUCTORS(MemoryDebug);
     42 };
     43 
     44 }  // namespace base
     45 
     46 #endif  // BASE_MEMORY_DEBUG_H_
     47