aboutsummaryrefslogtreecommitdiff
path: root/src/google
diff options
context:
space:
mode:
authorbryner <bryner@4c0a9323-5329-0410-9bdc-e9ce6186880e>2006-09-08 02:35:53 +0000
committerbryner <bryner@4c0a9323-5329-0410-9bdc-e9ce6186880e>2006-09-08 02:35:53 +0000
commitd5e66382d10b1570d75e924410d58b47857fe799 (patch)
tree631ca22ac3409363ae8418c7bc846d9e198bed9f /src/google
parentMake SourceLineResolver fill a StackFrame rather than using its own struct (#... (diff)
downloadbreakpad-d5e66382d10b1570d75e924410d58b47857fe799.tar.xz
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
Diffstat (limited to 'src/google')
-rw-r--r--src/google/crash_report_processor.h44
-rw-r--r--src/google/symbol_supplier.h41
2 files changed, 85 insertions, 0 deletions
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 <string>
+
+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 <string>
+
+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__