From e9faf5482802cb508401881f15b2712eb2f828f2 Mon Sep 17 00:00:00 2001 From: jimblandy Date: Mon, 11 Jan 2010 22:31:50 +0000 Subject: 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 --- .../processor/basic_source_line_resolver.h | 4 +++- .../processor/source_line_resolver_interface.h | 18 +++++++++++------- 2 files changed, 14 insertions(+), 8 deletions(-) (limited to 'src/google_breakpad') 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 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 -- cgit v1.2.1