Add an abstract interface to SourceLineResolver, and allow any implementation

to be used with MinidumpProcessor.  The basic SourceLineResolver is now a
public interface (#89)



git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@83 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
bryner 2006-12-11 23:22:54 +00:00
parent 65dbfcc15f
commit fd38d48e6d
18 changed files with 252 additions and 157 deletions

View file

@ -50,6 +50,7 @@ class CodeModules;
template<typename T> class linked_ptr;
class MemoryRegion;
class MinidumpContext;
class SourceLineResolverInterface;
struct StackFrame;
struct StackFrameInfo;
class SymbolSupplier;
@ -73,7 +74,8 @@ class Stackwalker {
static Stackwalker* StackwalkerForCPU(MinidumpContext *context,
MemoryRegion *memory,
const CodeModules *modules,
SymbolSupplier *supplier);
SymbolSupplier *supplier,
SourceLineResolverInterface *resolver);
protected:
// memory identifies a MemoryRegion that provides the stack memory
@ -81,10 +83,13 @@ class Stackwalker {
// object that is used to look up which code module each stack frame is
// associated with. supplier is an optional caller-supplied SymbolSupplier
// implementation. If supplier is NULL, source line info will not be
// resolved.
// resolved. resolver is an instance of SourceLineResolverInterface
// (see source_line_resolver_interface.h and basic_source_line_resolver.h).
// If resolver is NULL, source line info will not be resolved.
Stackwalker(MemoryRegion *memory,
const CodeModules *modules,
SymbolSupplier *supplier);
SymbolSupplier *supplier,
SourceLineResolverInterface *resolver);
// The stack memory to walk. Subclasses will require this region to
// get information from the stack.
@ -115,6 +120,9 @@ class Stackwalker {
// The optional SymbolSupplier for resolving source line info.
SymbolSupplier *supplier_;
// The SourceLineResolver implementation
SourceLineResolverInterface *resolver_;
};