123456789101112131415161718192021222324252627282930313233343536373839404142 |
- // 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.
- #ifndef BASE_DEBUG_DUMP_WITHOUT_CRASHING_H_
- #define BASE_DEBUG_DUMP_WITHOUT_CRASHING_H_
- #include "base/base_export.h"
- #include "base/compiler_specific.h"
- #include "build/build_config.h"
- namespace base {
- namespace debug {
- // Handler to silently dump the current process without crashing.
- // Before calling this function, call SetDumpWithoutCrashingFunction to pass a
- // function pointer.
- // Windows:
- // This must be done for each instance of base (i.e. module) and is normally
- // chrome_elf!DumpProcessWithoutCrash. See example code in chrome_main.cc that
- // does this for chrome.dll and chrome_child.dll. Note: Crashpad sets this up
- // for main chrome.exe as part of calling crash_reporter::InitializeCrashpad.
- // Mac/Linux:
- // Crashpad does this as part of crash_reporter::InitializeCrashpad.
- // Returns false if called before SetDumpWithoutCrashingFunction.
- //
- // This function must not be called with a tail call because that would cause
- // the caller to be omitted from the call stack in the crash dump, and that is
- // confusing and omits what is likely the most important context.
- BASE_EXPORT bool NOT_TAIL_CALLED DumpWithoutCrashing();
- // Sets a function that'll be invoked to dump the current process when
- // DumpWithoutCrashing() is called. May be called with null to remove a
- // previously set function.
- BASE_EXPORT void SetDumpWithoutCrashingFunction(void (CDECL *function)());
- } // namespace debug
- } // namespace base
- #endif // BASE_DEBUG_DUMP_WITHOUT_CRASHING_H_
|