crashpad/test/ios/host/cptest_crash_view_controller.mm
Justin Cohen 17a515d33d [ios] Bring up first draft Mach exception server.
Add Mach exception server and fill out exceptions snapshot.

Note that:
 - The 'capture' portion of this CL will be moved out of the snapshot
   interface and into a separate in-process dump to disk location.
 - All of the pointer dereferences need to be wrapped in vm_read.
 - The read-fast-and-dump logic in exception_snapshot will end up in a
   different file completely, but until we pick a
   serialization/deserialization method, keep it as-is.

Bug: crashpad:31
Change-Id: I44203aa44036a341d6b4517fde7ab0cb9d7e94d7
Reviewed-on: https://chromium-review.googlesource.com/c/crashpad/crashpad/+/2160122
Commit-Queue: Justin Cohen <justincohen@chromium.org>
Reviewed-by: Mark Mentovai <mark@chromium.org>
2020-04-25 23:38:48 +00:00

66 lines
2.1 KiB
Plaintext

// Copyright 2020 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.
#import "test/ios/host/cptest_crash_view_controller.h"
#if !defined(__has_feature) || !__has_feature(objc_arc)
#error "This file requires ARC support."
#endif
@implementation CPTestCrashViewController
- (void)loadView {
self.view = [[UIView alloc] init];
UIStackView* buttonStack = [[UIStackView alloc] init];
buttonStack.axis = UILayoutConstraintAxisVertical;
buttonStack.spacing = 6;
UIButton* button = [UIButton new];
[button setTitle:@"UIGestureEnvironmentException"
forState:UIControlStateNormal];
UITapGestureRecognizer* tapGesture = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(throwUIGestureEnvironmentException)];
[button addGestureRecognizer:tapGesture];
[button setTranslatesAutoresizingMaskIntoConstraints:NO];
[buttonStack addArrangedSubview:button];
[self.view addSubview:buttonStack];
[buttonStack setTranslatesAutoresizingMaskIntoConstraints:NO];
[NSLayoutConstraint activateConstraints:@[
[buttonStack.bottomAnchor constraintEqualToAnchor:self.view.bottomAnchor],
[buttonStack.topAnchor constraintEqualToAnchor:self.view.topAnchor],
[buttonStack.leadingAnchor constraintEqualToAnchor:self.view.leadingAnchor],
[buttonStack.trailingAnchor
constraintEqualToAnchor:self.view.trailingAnchor],
]];
}
- (void)throwUIGestureEnvironmentException {
NSArray* empty_array = @[];
[empty_array objectAtIndex:42];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = UIColor.redColor;
}
@end