From d5e66382d10b1570d75e924410d58b47857fe799 Mon Sep 17 00:00:00 2001 From: bryner Date: Fri, 8 Sep 2006 02:35:53 +0000 Subject: Add support to the StackWalker for resolving symbols, using a caller-implemented SymbolSupplier object to get a symbol file. Add a CrashReportProcessor object which provides a simple API for processing a CrashReport struct, given a SymbolSupplier and a minidump file. r=mmentovai (#17)) git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@18 4c0a9323-5329-0410-9bdc-e9ce6186880e --- src/google/crash_report_processor.h | 44 +++++++++++++++++++++++++++++++++++++ src/google/symbol_supplier.h | 41 ++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 src/google/crash_report_processor.h create mode 100644 src/google/symbol_supplier.h (limited to 'src/google') diff --git a/src/google/crash_report_processor.h b/src/google/crash_report_processor.h new file mode 100644 index 00000000..161bc8cc --- /dev/null +++ b/src/google/crash_report_processor.h @@ -0,0 +1,44 @@ +// 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. + +#ifndef GOOGLE_CRASH_REPORT_PROCESSOR_H__ +#define GOOGLE_CRASH_REPORT_PROCESSOR_H__ + +#include + +namespace google_airbag { + +using std::string; + +struct CrashReport; +class SymbolSupplier; + +class CrashReportProcessor { + public: + // Initializes this CrashReportProcessor. supplier should be an + // implementation of the SymbolSupplier abstract base class. + CrashReportProcessor(SymbolSupplier *supplier); + ~CrashReportProcessor(); + + // Fills in the stack and other derived data for the CrashReport, + // using the supplied minidump file. Returns true on success. + bool ProcessReport(CrashReport *report, const string &minidump_file); + + private: + SymbolSupplier *supplier_; +}; + +} // namespace google_airbag + +#endif // GOOGLE_CRASH_REPORT_PROCESSOR_H__ diff --git a/src/google/symbol_supplier.h b/src/google/symbol_supplier.h new file mode 100644 index 00000000..279e99f2 --- /dev/null +++ b/src/google/symbol_supplier.h @@ -0,0 +1,41 @@ +// 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. + +// The caller may implement the SymbolSupplier abstract base class +// to provide symbols for a given module. + +#ifndef GOOGLE_SYMBOL_SUPPLIER_H__ +#define GOOGLE_SYMBOL_SUPPLIER_H__ + +#include + +namespace google_airbag { + +using std::string; +class MinidumpModule; +struct CrashReport; + +class SymbolSupplier { + public: + virtual ~SymbolSupplier() {} + + // Returns the path to the symbol file for the given module. + // report will be the pointer supplied to ProcessReport(). + virtual string GetSymbolFile(MinidumpModule *module, + const CrashReport *report) = 0; +}; + +} // namespace google_airbag + +#endif // GOOGLE_SYMBOL_SUPPLIER_H__ -- cgit v1.2.1