mirror of
https://github.com/chromium/crashpad.git
synced 2024-12-28 07:48:14 +08:00
9ab4fbf1e1
In setting up the gn build, slightly different optimization settings were applied for release builds. This caused a couple things to happen, 1) the sketchy noinline declspec was ignored, and 2) the distance between reading the IP and the actual crash exceeded the tolerance of 64 bytes in the parent. To make the test more robust to this, use CaptureContext() (I think our improved version didn't exist at the time the tests was originally written). Also, switch from crashpad::CheckedWriteFile to Windows' WriteFile(), which avoids inlining a whole lot of code at that point. The return value is not checked, but the next thing that happens is that the function crashes unconditionally, so this does not seem like a huge problem. Bug: crashpad:79 Change-Id: I8193d8ce8b01e1533c16b207813c36d6d6113d89 Reviewed-on: https://chromium-review.googlesource.com/902693 Commit-Queue: Scott Graham <scottmg@chromium.org> Reviewed-by: Mark Mentovai <mark@chromium.org>
35 lines
1.4 KiB
C
35 lines
1.4 KiB
C
// Copyright 2015 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_WIN_H_
|
|
#define CRASHPAD_CLIENT_SIMULATE_CRASH_WIN_H_
|
|
|
|
#include <windows.h>
|
|
|
|
#include "client/crashpad_client.h"
|
|
#include "util/win/capture_context.h"
|
|
|
|
//! \file
|
|
|
|
//! \brief Captures the CPU context and captures a dump without an exception.
|
|
#define CRASHPAD_SIMULATE_CRASH() \
|
|
do { \
|
|
/* Not "context" to avoid variable shadowing warnings. */ \
|
|
CONTEXT simulate_crash_cpu_context; \
|
|
crashpad::CaptureContext(&simulate_crash_cpu_context); \
|
|
crashpad::CrashpadClient::DumpWithoutCrash(simulate_crash_cpu_context); \
|
|
} while (false)
|
|
|
|
#endif // CRASHPAD_CLIENT_SIMULATE_CRASH_WIN_H_
|