| // 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. |
| |
| // Public interface for enabling Breakpad on Linux systems. |
| |
| #ifndef COMPONENTS_CRASH_CONTENT_APP_BREAKPAD_LINUX_H_ |
| #define COMPONENTS_CRASH_CONTENT_APP_BREAKPAD_LINUX_H_ |
| |
| #include <signal.h> |
| #include <string> |
| |
| #include "build/build_config.h" |
| |
| namespace breakpad { |
| |
| // Turns on the crash reporter in any process. |
| extern void InitCrashReporter(const std::string& process_type); |
| |
| // Sets the product/distribution channel crash key. |
| void SetChannelCrashKey(const std::string& channel); |
| |
| #if defined(OS_ANDROID) |
| extern void InitCrashKeysForTesting(); |
| |
| struct SanitizationInfo { |
| bool should_sanitize_dumps = false; |
| bool skip_dump_if_principal_mapping_not_referenced = false; |
| uintptr_t address_within_principal_mapping = 0; |
| }; |
| |
| // Turns on the crash reporter in any process. |
| extern void InitCrashReporter(const std::string& process_type, |
| const SanitizationInfo& sanitization_info); |
| |
| const char kWebViewSingleProcessType[] = "webview"; |
| const char kBrowserProcessType[] = "browser"; |
| |
| // Enables the crash reporter in child processes. |
| extern void InitNonBrowserCrashReporterForAndroid( |
| const std::string& process_type); |
| // Enables the crash reporter in child processes. |
| extern void InitNonBrowserCrashReporterForAndroid( |
| const std::string& process_type, |
| const SanitizationInfo& sanitization_info); |
| |
| // Enables *micro*dump only. Can be called from any process. |
| extern void InitMicrodumpCrashHandlerIfNecessary( |
| const std::string& process_type, |
| const SanitizationInfo& sanitization_info); |
| |
| extern void AddGpuFingerprintToMicrodumpCrashHandler( |
| const std::string& gpu_fingerprint); |
| |
| // Calling SuppressDumpGeneration causes subsequent crashes to not |
| // generate dumps. Calling base::debug::DumpWithoutCrashing will still |
| // generate a dump. |
| extern void SuppressDumpGeneration(); |
| #endif // defined(OS_ANDROID) |
| |
| // Checks if crash reporting is enabled. Note that this is not the same as |
| // being opted into metrics reporting (and crash reporting), which controls |
| // whether InitCrashReporter() is called. |
| bool IsCrashReporterEnabled(); |
| |
| // Generates a minidump on demand for this process, writing it to |dump_fd|. |
| void GenerateMinidumpOnDemandForAndroid(int dump_fd); |
| |
| // Install a handler that gets a change to handle faults before Breakpad does |
| // any processing. This is used by V8 for trap-based bounds checks. |
| void SetFirstChanceExceptionHandler(bool (*handler)(int, siginfo_t*, void*)); |
| } // namespace breakpad |
| |
| #endif // COMPONENTS_CRASH_CONTENT_APP_BREAKPAD_LINUX_H_ |