diff options
author | jimblandy <jimblandy@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-01-11 22:31:50 +0000 |
---|---|---|
committer | jimblandy <jimblandy@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2010-01-11 22:31:50 +0000 |
commit | e9faf5482802cb508401881f15b2712eb2f828f2 (patch) | |
tree | 43cf980f2f90d735934b085a57b1fe2532311130 /src/google_breakpad/processor | |
parent | Breakpad DWARF Reader: Add DWARF language enumeration values. (diff) | |
download | breakpad-e9faf5482802cb508401881f15b2712eb2f828f2.tar.xz |
Issue 49013: Breakpad Processor: Use a separate API to retrieve Windows stack debugging info.
At the moment, FillSourceLineInfo returns Windows DIA-based stack
walking data. In addition to being ugly, this makes it difficult to
provide access to DWARF CFI-based stack walking data in a symmetrical
way.
This patch changes FillSourceLineInfo to do the single job its name
suggests, and adds a second member function to
SourceLineResolverInterface to retrieve Windows DIA stack walking
information. A sibling member function will provide access to DWARF
CFI stack walking data.
a=jimblandy, r=mmentovai
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@480 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/google_breakpad/processor')
-rw-r--r-- | src/google_breakpad/processor/basic_source_line_resolver.h | 4 | ||||
-rw-r--r-- | src/google_breakpad/processor/source_line_resolver_interface.h | 18 |
2 files changed, 14 insertions, 8 deletions
diff --git a/src/google_breakpad/processor/basic_source_line_resolver.h b/src/google_breakpad/processor/basic_source_line_resolver.h index 55902248..d7dd583c 100644 --- a/src/google_breakpad/processor/basic_source_line_resolver.h +++ b/src/google_breakpad/processor/basic_source_line_resolver.h @@ -63,7 +63,9 @@ class BasicSourceLineResolver : public SourceLineResolverInterface { virtual bool HasModule(const string &module_name) const; - virtual WindowsFrameInfo* FillSourceLineInfo(StackFrame *frame) const; + virtual void FillSourceLineInfo(StackFrame *frame) const; + + virtual WindowsFrameInfo *FindWindowsFrameInfo(const StackFrame *frame) const; private: template<class T> class MemAddrMap; diff --git a/src/google_breakpad/processor/source_line_resolver_interface.h b/src/google_breakpad/processor/source_line_resolver_interface.h index a139cf07..27aa3c93 100644 --- a/src/google_breakpad/processor/source_line_resolver_interface.h +++ b/src/google_breakpad/processor/source_line_resolver_interface.h @@ -1,4 +1,4 @@ -// Copyright (c) 2006, Google Inc. +// Copyright (c) 2006, Google Inc. -*- mode: C++ -*- // All rights reserved. // // Redistribution and use in source and binary forms, with or without @@ -65,12 +65,16 @@ class SourceLineResolverInterface { // Fills in the function_base, function_name, source_file_name, // and source_line fields of the StackFrame. The instruction and - // module_name fields must already be filled in. Additional debugging - // information, if available, is returned. If the information is not - // available, returns NULL. A NULL return value does not indicate an - // error. The caller takes ownership of any returned WindowsFrameInfo - // object. - virtual WindowsFrameInfo* FillSourceLineInfo(StackFrame *frame) const = 0; + // module_name fields must already be filled in. + virtual void FillSourceLineInfo(StackFrame *frame) const = 0; + + // If Windows stack walking information is available covering + // FRAME's instruction address, return a WindowsFrameInfo structure + // describing it. If the information is not available, returns NULL. + // A NULL return value does not indicate an error. The caller takes + // ownership of any returned WindowsFrameInfo object. + virtual WindowsFrameInfo *FindWindowsFrameInfo(const StackFrame *frame) + const = 0; protected: // SourceLineResolverInterface cannot be instantiated except by subclasses |