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()21 bool 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)())29 void 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