diff options
Diffstat (limited to 'src/processor/minidump_processor.cc')
-rw-r--r-- | src/processor/minidump_processor.cc | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/processor/minidump_processor.cc b/src/processor/minidump_processor.cc index eb520709..f58b54ba 100644 --- a/src/processor/minidump_processor.cc +++ b/src/processor/minidump_processor.cc @@ -27,10 +27,14 @@ // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +#include <memory> + #include "google/minidump_processor.h" #include "processor/minidump.h" #include "processor/stackwalker_x86.h" +using std::auto_ptr; + namespace google_airbag { MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier) @@ -68,10 +72,14 @@ bool MinidumpProcessor::Process(const string &minidump_file, return false; } - // TODO(bryner): figure out which StackWalker we want - StackwalkerX86 walker(exception->GetContext(), thread_memory, - dump.GetModuleList(), supplier_); - walker.Walk(stack_frames); + auto_ptr<Stackwalker> walker( + Stackwalker::StackwalkerForCPU(exception->GetContext(), thread_memory, + dump.GetModuleList(), supplier_)); + if (!walker.get()) { + return false; + } + + walker->Walk(stack_frames); return true; } |