OLD | NEW |
1 // Copyright (c) 2010 Google Inc. | 1 // Copyright (c) 2010 Google Inc. |
2 // All rights reserved. | 2 // All rights reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions are | 5 // modification, are permitted provided that the following conditions are |
6 // met: | 6 // met: |
7 // | 7 // |
8 // * Redistributions of source code must retain the above copyright | 8 // * Redistributions of source code must retain the above copyright |
9 // notice, this list of conditions and the following disclaimer. | 9 // notice, this list of conditions and the following disclaimer. |
10 // * Redistributions in binary form must reproduce the above | 10 // * Redistributions in binary form must reproduce the above |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
47 | 47 |
48 #include "common/using_std_string.h" | 48 #include "common/using_std_string.h" |
49 #include "google_breakpad/common/breakpad_types.h" | 49 #include "google_breakpad/common/breakpad_types.h" |
50 #include "google_breakpad/processor/code_modules.h" | 50 #include "google_breakpad/processor/code_modules.h" |
51 #include "google_breakpad/processor/memory_region.h" | 51 #include "google_breakpad/processor/memory_region.h" |
52 #include "google_breakpad/processor/stack_frame_symbolizer.h" | 52 #include "google_breakpad/processor/stack_frame_symbolizer.h" |
53 | 53 |
54 namespace google_breakpad { | 54 namespace google_breakpad { |
55 | 55 |
56 class CallStack; | 56 class CallStack; |
57 class MinidumpContext; | 57 class DumpContext; |
58 class StackFrameSymbolizer; | 58 class StackFrameSymbolizer; |
59 | 59 |
60 using std::set; | 60 using std::set; |
61 using std::vector; | 61 using std::vector; |
62 | 62 |
63 class Stackwalker { | 63 class Stackwalker { |
64 public: | 64 public: |
65 virtual ~Stackwalker() {} | 65 virtual ~Stackwalker() {} |
66 | 66 |
67 // Populates the given CallStack by calling GetContextFrame and | 67 // Populates the given CallStack by calling GetContextFrame and |
(...skipping 11 matching lines...) Expand all Loading... |
79 // There is a check for duplicate modules so no duplicates are expected. | 79 // There is a check for duplicate modules so no duplicates are expected. |
80 bool Walk(CallStack* stack, | 80 bool Walk(CallStack* stack, |
81 vector<const CodeModule*>* modules_without_symbols, | 81 vector<const CodeModule*>* modules_without_symbols, |
82 vector<const CodeModule*>* modules_with_corrupt_symbols); | 82 vector<const CodeModule*>* modules_with_corrupt_symbols); |
83 | 83 |
84 // Returns a new concrete subclass suitable for the CPU that a stack was | 84 // Returns a new concrete subclass suitable for the CPU that a stack was |
85 // generated on, according to the CPU type indicated by the context | 85 // generated on, according to the CPU type indicated by the context |
86 // argument. If no suitable concrete subclass exists, returns NULL. | 86 // argument. If no suitable concrete subclass exists, returns NULL. |
87 static Stackwalker* StackwalkerForCPU( | 87 static Stackwalker* StackwalkerForCPU( |
88 const SystemInfo* system_info, | 88 const SystemInfo* system_info, |
89 MinidumpContext* context, | 89 DumpContext* context, |
90 MemoryRegion* memory, | 90 MemoryRegion* memory, |
91 const CodeModules* modules, | 91 const CodeModules* modules, |
92 StackFrameSymbolizer* resolver_helper); | 92 StackFrameSymbolizer* resolver_helper); |
93 | 93 |
94 static void set_max_frames(uint32_t max_frames) { | 94 static void set_max_frames(uint32_t max_frames) { |
95 max_frames_ = max_frames; | 95 max_frames_ = max_frames; |
96 max_frames_set_ = true; | 96 max_frames_set_ = true; |
97 } | 97 } |
98 static uint32_t max_frames() { return max_frames_; } | 98 static uint32_t max_frames() { return max_frames_; } |
99 | 99 |
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 // frames allowed. Stack-scanning can be expensive, so the option to | 226 // frames allowed. Stack-scanning can be expensive, so the option to |
227 // disable or limit it is helpful in cases where unwind performance is | 227 // disable or limit it is helpful in cases where unwind performance is |
228 // important. This defaults to 1024, the same as max_frames_. | 228 // important. This defaults to 1024, the same as max_frames_. |
229 static uint32_t max_frames_scanned_; | 229 static uint32_t max_frames_scanned_; |
230 }; | 230 }; |
231 | 231 |
232 } // namespace google_breakpad | 232 } // namespace google_breakpad |
233 | 233 |
234 | 234 |
235 #endif // GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__ | 235 #endif // GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__ |
OLD | NEW |