// Copyright (C) 2006 Google Inc. // // 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. // CrashReport encapsulates all of the information for a single report, // including data sent with the report and data derived by the minidump // processor (stack trace, etc.). #ifndef GOOGLE_CRASH_REPORT_H__ #define GOOGLE_CRASH_REPORT_H__ #include #include #include "google/airbag_types.h" #include "google/stack_frame.h" namespace google_airbag { using std::vector; using std::string; struct CrashReport { // An optional id for the report. This is supplied by the caller // and is not used by airbag. u_int64_t report_id; // The time that the report was uploaded (milliseconds since the epoch) airbag_time_t report_time; // The uptime of the process before it crashed airbag_time_t process_uptime; // The cumulative uptime of the application for this user airbag_time_t cumulative_product_uptime; // The user's email address, if they provided it string user_email; // Extra comments the user provided, e.g. steps to reproduce the crash string user_comments; // The product which sent this report struct Product { string name; string version; }; Product product; // The user's operating system struct OS { string name; string version; }; OS os; // The user's CPU architecture (x86, PowerPC, x86_64, ...) string cpu_arch; // Extra product-specific key/value pairs struct ProductData { string key; string value; }; vector product_data; // The stack frames for the crashed thread, top-first.m // TODO(bryner): accommodate multiple threads StackFrames stack_frames; // The stack trace "signature", which can be used for matching up reports string stack_signature; }; } // namespace google_airbag #endif // GOOGLE_CRASH_REPORT_H__