| // Copyright 2013 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. |
| |
| #include "base/debug/dump_without_crashing.h" |
| |
| #include "base/logging.h" |
| |
| namespace { |
| |
| // Pointer to the function that's called by DumpWithoutCrashing() to dump the |
| // process's memory. |
| void(CDECL* dump_without_crashing_function_)() = nullptr; |
| |
| } // namespace |
| |
| namespace base { |
| |
| namespace debug { |
| |
| bool DumpWithoutCrashing() { |
| if (dump_without_crashing_function_) { |
| (*dump_without_crashing_function_)(); |
| return true; |
| } |
| return false; |
| } |
| |
| void SetDumpWithoutCrashingFunction(void (CDECL *function)()) { |
| #if !defined(COMPONENT_BUILD) |
| // In component builds, the same base is shared between modules |
| // so might be initialized several times. However in non- |
| // component builds this should never happen. |
| DCHECK(!dump_without_crashing_function_); |
| #endif |
| dump_without_crashing_function_ = function; |
| } |
| |
| } // namespace debug |
| |
| } // namespace base |