diff options
Diffstat (limited to 'src/google_breakpad/processor')
-rw-r--r-- | src/google_breakpad/processor/process_state.h | 6 | ||||
-rw-r--r-- | src/google_breakpad/processor/stackwalker.h | 12 |
2 files changed, 17 insertions, 1 deletions
diff --git a/src/google_breakpad/processor/process_state.h b/src/google_breakpad/processor/process_state.h index 780cb548..d234ebbf 100644 --- a/src/google_breakpad/processor/process_state.h +++ b/src/google_breakpad/processor/process_state.h @@ -106,6 +106,9 @@ class ProcessState { } const SystemInfo* system_info() const { return &system_info_; } const CodeModules* modules() const { return modules_; } + const vector<const CodeModule*>* modules_without_symbols() const { + return &modules_without_symbols_; + } ExploitabilityRating exploitability() const { return exploitability_; } private: @@ -158,6 +161,9 @@ class ProcessState { // ProcessState. const CodeModules *modules_; + // The modules that didn't have symbols when the report was processed. + vector<const CodeModule*> modules_without_symbols_; + // The exploitability rating as determined by the exploitability // engine. When the exploitability engine is not enabled this // defaults to EXPLOITABILITY_NONE. diff --git a/src/google_breakpad/processor/stackwalker.h b/src/google_breakpad/processor/stackwalker.h index 9e678e3c..f09291fe 100644 --- a/src/google_breakpad/processor/stackwalker.h +++ b/src/google_breakpad/processor/stackwalker.h @@ -43,6 +43,7 @@ #include <set> #include <string> +#include <vector> #include "common/using_std_string.h" #include "google_breakpad/common/breakpad_types.h" @@ -57,6 +58,7 @@ class MinidumpContext; class StackFrameSymbolizer; using std::set; +using std::vector; class Stackwalker { public: @@ -66,7 +68,15 @@ class Stackwalker { // GetCallerFrame. The frames are further processed to fill all available // data. Returns true if the stackwalk completed, or false if it was // interrupted by SymbolSupplier::GetSymbolFile(). - bool Walk(CallStack* stack); + // Upon return, modules_without_symbols will be populated with pointers to + // the code modules (CodeModule*) that DON'T have symbols. + // modules_without_symbols DOES NOT take ownership of the code modules. + // The lifetime of these code modules is the same as the lifetime of the + // CodeModules passed to the StackWalker constructor (which currently + // happens to be the lifetime of the Breakpad's ProcessingState object). + // There is a check for duplicate modules so no duplicates are expected. + bool Walk(CallStack* stack, + vector<const CodeModule*>* modules_without_symbols); // Returns a new concrete subclass suitable for the CPU that a stack was // generated on, according to the CPU type indicated by the context |