crashpad/client/simulate_crash_ios.h
Justin Cohen 202283a85c ios: Add API to DumpWithoutCrashAndDeferProcessingAtPath.
DumpWithoutCrashAndDeferProcessingAtPath(path) generate an intermediate
dump that can only be processed if ProcessIntermediateDump(file)
is called.  This means the client retains ownership of cleaning up the
intermediate dump if for whatever reason it is no longer needed.

This is useful for Chromium hang reports, which are speculatively
generated during a hang, but are later deleted if a hang recovers or if
the hang leads to an actual crash.

Bug: crashpad: 31
Change-Id: Ie424b375ceae3f5c0da320e766c990ea10df2f52
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/3021668
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Justin Cohen <justincohen@chromium.org>
2021-07-15 12:21:12 +00:00

59 lines
2.6 KiB
C

// Copyright 2021 The Crashpad Authors. All rights reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#ifndef CRASHPAD_CLIENT_SIMULATE_CRASH_IOS_H_
#define CRASHPAD_CLIENT_SIMULATE_CRASH_IOS_H_
#include "client/crashpad_client.h"
#include "util/misc/capture_context.h"
//! \file
//! \brief Captures the CPU context and creates a minidump dump without an
//! exception. The minidump will immediately become eligible for further
//! processing, including upload.
//!
//! \sa CRASHPAD_SIMULATE_CRASH_AND_DEFER_PROCESSING
#define CRASHPAD_SIMULATE_CRASH() \
do { \
crashpad::NativeCPUContext cpu_context; \
crashpad::CaptureContext(&cpu_context); \
crashpad::CrashpadClient::DumpWithoutCrash(&cpu_context); \
} while (false)
//! \brief Captures the CPU context and captures an intermediate dump without an
//! exception. Does not convert the intermediate dump into a minidump.
//!
//! Deferring processing is useful when the application may be in an unstable
//! state, such as during a hang.
//!
//! \sa CRASHPAD_SIMULATE_CRASH
#define CRASHPAD_SIMULATE_CRASH_AND_DEFER_PROCESSING() \
do { \
crashpad::NativeCPUContext cpu_context; \
crashpad::CaptureContext(&cpu_context); \
crashpad::CrashpadClient::DumpWithoutCrashAndDeferProcessing( \
&cpu_context); \
} while (false)
#define CRASHPAD_SIMULATE_CRASH_AND_DEFER_PROCESSING_AT_PATH(path) \
do { \
crashpad::NativeCPUContext cpu_context; \
crashpad::CaptureContext(&cpu_context); \
crashpad::CrashpadClient::DumpWithoutCrashAndDeferProcessingAtPath( \
&cpu_context, path); \
} while (false)
#endif // CRASHPAD_CLIENT_SIMULATE_CRASH_IOS_H_