OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "base/debug/dump_without_crashing.h" | 5 #include "base/debug/dump_without_crashing.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 | 8 |
9 namespace { | 9 namespace { |
10 | 10 |
11 // Pointer to the function that's called by DumpWithoutCrashing() to dump the | 11 // Pointer to the function that's called by DumpWithoutCrashing() to dump the |
12 // process's memory. | 12 // process's memory. |
13 void (CDECL *dump_without_crashing_function_)() = NULL; | 13 void (CDECL *dump_without_crashing_function_)() = NULL; |
14 | 14 |
15 } // namespace | 15 } // namespace |
16 | 16 |
17 namespace base { | 17 namespace base { |
18 | 18 |
19 namespace debug { | 19 namespace debug { |
20 | 20 |
21 bool DumpWithoutCrashing() { | 21 bool DumpWithoutCrashing() { |
22 if (dump_without_crashing_function_) { | 22 if (dump_without_crashing_function_) { |
23 (*dump_without_crashing_function_)(); | 23 (*dump_without_crashing_function_)(); |
24 return true; | 24 return true; |
25 } | 25 } |
26 return false; | 26 return false; |
27 } | 27 } |
28 | 28 |
29 void 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 |
30 dump_without_crashing_function_ = function; | 36 dump_without_crashing_function_ = function; |
31 } | 37 } |
32 | 38 |
33 } // namespace debug | 39 } // namespace debug |
34 | 40 |
35 } // namespace base | 41 } // namespace base |
OLD | NEW |