Get rid of CrashReport, and rename CrashReportProcessor to MinidumpProcessor
(#26) r=mmentovai. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@26 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
parent
d9fb68c3e0
commit
cce3492afc
13 changed files with 788 additions and 1328 deletions
64
src/processor/minidump_processor.cc
Normal file
64
src/processor/minidump_processor.cc
Normal file
|
@ -0,0 +1,64 @@
|
|||
// 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.
|
||||
|
||||
#include "google/minidump_processor.h"
|
||||
#include "processor/minidump.h"
|
||||
#include "processor/stackwalker_x86.h"
|
||||
|
||||
namespace google_airbag {
|
||||
|
||||
MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier)
|
||||
: supplier_(supplier) {
|
||||
}
|
||||
|
||||
MinidumpProcessor::~MinidumpProcessor() {
|
||||
}
|
||||
|
||||
bool MinidumpProcessor::Process(const string &minidump_file,
|
||||
void *supplier_data,
|
||||
StackFrames *stack_frames) {
|
||||
Minidump dump(minidump_file);
|
||||
if (!dump.Read()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
MinidumpException *exception = dump.GetException();
|
||||
if (!exception) {
|
||||
return false;
|
||||
}
|
||||
|
||||
MinidumpThreadList *threads = dump.GetThreadList();
|
||||
if (!threads) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO(bryner): get all the threads
|
||||
MinidumpThread *thread = threads->GetThreadByID(exception->GetThreadID());
|
||||
if (!thread) {
|
||||
return false;
|
||||
}
|
||||
|
||||
MinidumpMemoryRegion *thread_memory = thread->GetMemory();
|
||||
if (!thread_memory) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// TODO(bryner): figure out which StackWalker we want
|
||||
StackwalkerX86 walker(exception->GetContext(), thread_memory,
|
||||
dump.GetModuleList(), supplier_, supplier_data);
|
||||
walker.Walk(stack_frames);
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
Loading…
Add table
Add a link
Reference in a new issue