1 // Copyright 2013 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 #include "base/debug/dump_without_crashing.h" 6 7 #include "base/logging.h" 8 9 namespace { 10 11 // Pointer to the function that's called by DumpWithoutCrashing() to dump the 12 // process's memory. 13 void(CDECL* dump_without_crashing_function_)() = nullptr; 14 15 } // namespace 16 17 namespace base { 18 19 namespace debug { 20 DumpWithoutCrashing()21bool DumpWithoutCrashing() { 22 if (dump_without_crashing_function_) { 23 (*dump_without_crashing_function_)(); 24 return true; 25 } 26 return false; 27 } 28 SetDumpWithoutCrashingFunction(void (CDECL * function)())29void SetDumpWithoutCrashingFunction(void (CDECL *function)()) { 30 #if !defined(COMPONENT_BUILD) 31 // In component builds, the same base is shared between modules 32 // so might be initialized several times. However in non- 33 // component builds this should never happen. 34 DCHECK(!dump_without_crashing_function_); 35 #endif 36 dump_without_crashing_function_ = function; 37 } 38 39 } // namespace debug 40 41 } // namespace base 42