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
This commit is contained in:
jimblandy 2010-01-11 22:31:50 +00:00
parent 5b787b1911
commit e9faf54828
5 changed files with 103 additions and 82 deletions

View file

@ -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