mirror of
https://git.suyu.dev/suyu/breakpad.git
synced 2026-02-19 08:42:59 +00:00
Rename Airbag to Breakpad.
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@122 4c0a9323-5329-0410-9bdc-e9ce6186880e
This commit is contained in:
@@ -33,7 +33,7 @@
|
||||
#include "client/mac/handler/exception_handler.h"
|
||||
#include "client/mac/handler/minidump_generator.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::map;
|
||||
|
||||
@@ -512,4 +512,4 @@ void ExceptionHandler::UpdateNextID() {
|
||||
next_minidump_id_c_ = next_minidump_id_.c_str();
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::string;
|
||||
|
||||
@@ -48,13 +48,13 @@ struct ExceptionParameters;
|
||||
|
||||
class ExceptionHandler {
|
||||
public:
|
||||
// A callback function to run before Airbag performs any substantial
|
||||
// A callback function to run before Breakpad performs any substantial
|
||||
// processing of an exception. A FilterCallback is called before writing
|
||||
// a minidump. context is the parameter supplied by the user as
|
||||
// callback_context when the handler was created.
|
||||
//
|
||||
// If a FilterCallback returns true, Airbag will continue processing,
|
||||
// attempting to write a minidump. If a FilterCallback returns false, Airbag
|
||||
// If a FilterCallback returns true, Breakpad will continue processing,
|
||||
// attempting to write a minidump. If a FilterCallback returns false, Breakpad
|
||||
// will immediately report the exception as unhandled without writing a
|
||||
// minidump, allowing another handler the opportunity to handle it.
|
||||
typedef bool (*FilterCallback)(void *context);
|
||||
@@ -64,7 +64,7 @@ class ExceptionHandler {
|
||||
// file is <dump_dir>/<minidump_id>.dmp.
|
||||
// |context| is the value passed into the constructor.
|
||||
// |succeeded| indicates whether a minidump file was successfully written.
|
||||
// Return true if the exception was fully handled and airbag should exit.
|
||||
// Return true if the exception was fully handled and breakpad should exit.
|
||||
// Return false to allow any other exception handlers to process the
|
||||
// exception.
|
||||
typedef bool (*MinidumpCallback)(const char *dump_dir,
|
||||
@@ -183,6 +183,6 @@ class ExceptionHandler {
|
||||
bool use_minidump_write_mutex_;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // CLIENT_MAC_HANDLER_EXCEPTION_HANDLER_H__
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
//
|
||||
// Copyright (c) 2006, Google Inc.
|
||||
// All rights reserved.
|
||||
//
|
||||
@@ -39,6 +38,7 @@ g++ -framework CoreFoundation -I../../.. \
|
||||
exception_handler_test.cc \
|
||||
-o exception_handler_test
|
||||
*/
|
||||
|
||||
#include <pthread.h>
|
||||
#include <pwd.h>
|
||||
#include <unistd.h>
|
||||
@@ -49,7 +49,7 @@ g++ -framework CoreFoundation -I../../.. \
|
||||
#include "minidump_generator.h"
|
||||
|
||||
using std::string;
|
||||
using google_airbag::ExceptionHandler;
|
||||
using google_breakpad::ExceptionHandler;
|
||||
|
||||
static void *SleepyFunction(void *) {
|
||||
while (1) {
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
using MacStringUtils::ConvertToString;
|
||||
using MacStringUtils::IntegerValueAtIndex;
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
MinidumpGenerator::MinidumpGenerator()
|
||||
: exception_type_(0),
|
||||
@@ -136,7 +136,7 @@ bool MinidumpGenerator::Write(const char *path) {
|
||||
&MinidumpGenerator::WriteSystemInfoStream,
|
||||
&MinidumpGenerator::WriteModuleListStream,
|
||||
&MinidumpGenerator::WriteMiscInfoStream,
|
||||
&MinidumpGenerator::WriteAirbagInfoStream,
|
||||
&MinidumpGenerator::WriteBreakpadInfoStream,
|
||||
// Exception stream needs to be the last entry in this array as it may
|
||||
// be omitted in the case where the minidump is written without an
|
||||
// exception.
|
||||
@@ -679,24 +679,24 @@ bool MinidumpGenerator::WriteMiscInfoStream(MDRawDirectory *misc_info_stream) {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool MinidumpGenerator::WriteAirbagInfoStream(
|
||||
MDRawDirectory *airbag_info_stream) {
|
||||
TypedMDRVA<MDRawAirbagInfo> info(&writer_);
|
||||
bool MinidumpGenerator::WriteBreakpadInfoStream(
|
||||
MDRawDirectory *breakpad_info_stream) {
|
||||
TypedMDRVA<MDRawBreakpadInfo> info(&writer_);
|
||||
|
||||
if (!info.Allocate())
|
||||
return false;
|
||||
|
||||
airbag_info_stream->stream_type = MD_AIRBAG_INFO_STREAM;
|
||||
airbag_info_stream->location = info.location();
|
||||
MDRawAirbagInfo *info_ptr = info.get();
|
||||
breakpad_info_stream->stream_type = MD_BREAKPAD_INFO_STREAM;
|
||||
breakpad_info_stream->location = info.location();
|
||||
MDRawBreakpadInfo *info_ptr = info.get();
|
||||
|
||||
if (exception_thread_ && exception_type_) {
|
||||
info_ptr->validity = MD_AIRBAG_INFO_VALID_DUMP_THREAD_ID |
|
||||
MD_AIRBAG_INFO_VALID_REQUESTING_THREAD_ID;
|
||||
info_ptr->validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID |
|
||||
MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID;
|
||||
info_ptr->dump_thread_id = mach_thread_self();
|
||||
info_ptr->requesting_thread_id = exception_thread_;
|
||||
} else {
|
||||
info_ptr->validity = MD_AIRBAG_INFO_VALID_DUMP_THREAD_ID;
|
||||
info_ptr->validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID;
|
||||
info_ptr->dump_thread_id = mach_thread_self();
|
||||
info_ptr->requesting_thread_id = 0;
|
||||
}
|
||||
@@ -704,4 +704,4 @@ bool MinidumpGenerator::WriteAirbagInfoStream(
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -37,9 +37,9 @@
|
||||
#include <string>
|
||||
|
||||
#include "client/minidump_file_writer.h"
|
||||
#include "google_airbag/common/minidump_format.h"
|
||||
#include "google_breakpad/common/minidump_format.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::string;
|
||||
|
||||
@@ -84,7 +84,7 @@ class MinidumpGenerator {
|
||||
bool WriteSystemInfoStream(MDRawDirectory *system_info_stream);
|
||||
bool WriteModuleListStream(MDRawDirectory *module_list_stream);
|
||||
bool WriteMiscInfoStream(MDRawDirectory *misc_info_stream);
|
||||
bool WriteAirbagInfoStream(MDRawDirectory *airbag_info_stream);
|
||||
bool WriteBreakpadInfoStream(MDRawDirectory *breakpad_info_stream);
|
||||
|
||||
// Helpers
|
||||
u_int64_t CurrentPCForStack(thread_state_data_t state);
|
||||
@@ -118,6 +118,6 @@ class MinidumpGenerator {
|
||||
static int os_build_number_;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // CLIENT_MAC_GENERATOR_MINIDUMP_GENERATOR_H__
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
//
|
||||
// Copyright (c) 2006, Google Inc.
|
||||
// All rights reserved.
|
||||
//
|
||||
@@ -39,7 +38,7 @@
|
||||
#include "minidump_file_writer.h"
|
||||
|
||||
using std::string;
|
||||
using google_airbag::MinidumpGenerator;
|
||||
using google_breakpad::MinidumpGenerator;
|
||||
|
||||
static bool doneWritingReport = false;
|
||||
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
08FB7794FE84155DC02AAC07 /* MinidumpWriter */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9BD82C040B0133420055103E /* Airbag */,
|
||||
9BD82C040B0133420055103E /* Breakpad */,
|
||||
08FB7795FE84155DC02AAC07 /* Source */,
|
||||
9B37CEEA0AF98EB600FA4BD4 /* Frameworks */,
|
||||
1AB674ADFE9D54B511CA2CBB /* Products */,
|
||||
@@ -138,7 +138,7 @@
|
||||
name = Frameworks;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9BD82C040B0133420055103E /* Airbag */ = {
|
||||
9BD82C040B0133420055103E /* Breakpad */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9B35FF560B267D5F008DE8C7 /* convert_UTF.c */,
|
||||
@@ -155,7 +155,7 @@
|
||||
9BD82C2B0B01345E0055103E /* string_utilities.cc */,
|
||||
9BD82C2C0B01345E0055103E /* string_utilities.h */,
|
||||
);
|
||||
name = Airbag;
|
||||
name = Breakpad;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#include "client/minidump_file_writer.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
template<typename MDType>
|
||||
inline bool TypedMDRVA<MDType>::Allocate() {
|
||||
@@ -86,6 +86,6 @@ inline bool TypedMDRVA<MDType>::Flush() {
|
||||
return writer_->Copy(position_, &data_, sizeof(MDType));
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // CLIENT_MINIDUMP_FILE_WRITER_INL_H__
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
#include "client/minidump_file_writer-inl.h"
|
||||
#include "common/string_conversion.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
const MDRVA MinidumpFileWriter::kInvalidMDRVA = static_cast<MDRVA>(-1);
|
||||
|
||||
@@ -248,4 +248,4 @@ bool UntypedMDRVA::Copy(MDRVA position, const void *src, size_t size) {
|
||||
return writer_->Copy(position, src, size);
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// minidump_file_writer.h: Implements file-based minidump generation. It's
|
||||
// intended to be used with the Google Airbag open source crash handling
|
||||
// intended to be used with the Google Breakpad open source crash handling
|
||||
// project.
|
||||
|
||||
#ifndef CLIENT_MINIDUMP_FILE_WRITER_H__
|
||||
@@ -36,9 +36,9 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "google_airbag/common/minidump_format.h"
|
||||
#include "google_breakpad/common/minidump_format.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
class UntypedMDRVA;
|
||||
template<typename MDType> class TypedMDRVA;
|
||||
@@ -245,6 +245,6 @@ class TypedMDRVA : public UntypedMDRVA {
|
||||
AllocationState allocation_state_;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // CLIENT_MINIDUMP_FILE_WRITER_H__
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// Copyright (c) 2006, Google Inc. All rights reserved.
|
||||
// Author: waylonis@google.com (Dan Waylonis)
|
||||
// Copyright (c) 2006, Google Inc.
|
||||
// All rights reserved.
|
||||
//
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are
|
||||
@@ -27,6 +27,8 @@
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// Author: waylonis@google.com (Dan Waylonis)
|
||||
|
||||
/*
|
||||
g++ -I../ ../common/convert_UTF.c \
|
||||
../common/string_conversion.cc \
|
||||
@@ -40,7 +42,7 @@
|
||||
|
||||
#include "minidump_file_writer-inl.h"
|
||||
|
||||
using google_airbag::MinidumpFileWriter;
|
||||
using google_breakpad::MinidumpFileWriter;
|
||||
|
||||
#define ASSERT_TRUE(cond) \
|
||||
if (!(cond)) { \
|
||||
@@ -72,7 +74,7 @@ static bool WriteFile(const char *path) {
|
||||
MinidumpFileWriter writer;
|
||||
if (writer.Open(path)) {
|
||||
// Test a single structure
|
||||
google_airbag::TypedMDRVA<StringStructure> strings(&writer);
|
||||
google_breakpad::TypedMDRVA<StringStructure> strings(&writer);
|
||||
ASSERT_TRUE(strings.Allocate());
|
||||
strings.get()->integer_value = 0xBEEF;
|
||||
const char *first = "First String";
|
||||
@@ -81,7 +83,7 @@ static bool WriteFile(const char *path) {
|
||||
ASSERT_TRUE(writer.WriteString(second, 0, &strings.get()->second_string));
|
||||
|
||||
// Test an array structure
|
||||
google_airbag::TypedMDRVA<ArrayStructure> array(&writer);
|
||||
google_breakpad::TypedMDRVA<ArrayStructure> array(&writer);
|
||||
unsigned int count = 10;
|
||||
ASSERT_TRUE(array.AllocateArray(count));
|
||||
for (unsigned int i = 0; i < count; ++i) {
|
||||
@@ -93,7 +95,7 @@ static bool WriteFile(const char *path) {
|
||||
}
|
||||
|
||||
// Test an object followed by an array
|
||||
google_airbag::TypedMDRVA<ObjectAndArrayStructure> obj_array(&writer);
|
||||
google_breakpad::TypedMDRVA<ObjectAndArrayStructure> obj_array(&writer);
|
||||
ASSERT_TRUE(obj_array.AllocateObjectAndArray(count,
|
||||
sizeof(ArrayStructure)));
|
||||
obj_array.get()->count = count;
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
#include "client/windows/handler/exception_handler.h"
|
||||
#include "common/windows/guid_string.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
static const int kExceptionHandlerThreadInitialStackSize = 64 * 1024;
|
||||
|
||||
@@ -144,7 +144,7 @@ ExceptionHandler::~ExceptionHandler() {
|
||||
} else {
|
||||
// TODO(mmentovai): use advapi32!ReportEvent to log the warning to the
|
||||
// system's application event log.
|
||||
fprintf(stderr, "warning: removing Airbag handler out of order\n");
|
||||
fprintf(stderr, "warning: removing Breakpad handler out of order\n");
|
||||
for (vector<ExceptionHandler *>::iterator iterator =
|
||||
handler_stack_->begin();
|
||||
iterator != handler_stack_->end();
|
||||
@@ -202,7 +202,7 @@ DWORD ExceptionHandler::ExceptionHandlerThreadMain(void *lpParameter) {
|
||||
class AutoExceptionHandler {
|
||||
public:
|
||||
AutoExceptionHandler() {
|
||||
// Increment handler_stack_index_ so that if another Airbag handler is
|
||||
// Increment handler_stack_index_ so that if another Breakpad handler is
|
||||
// registered using this same HandleException function, and it needs to be
|
||||
// called while this handler is running (either becaause this handler
|
||||
// declines to handle the exception, or an exception occurs during
|
||||
@@ -415,23 +415,23 @@ bool ExceptionHandler::WriteMinidumpWithException(
|
||||
except_info.ExceptionPointers = exinfo;
|
||||
except_info.ClientPointers = FALSE;
|
||||
|
||||
// Add an MDRawAirbagInfo stream to the minidump, to provide additional
|
||||
// information about the exception handler to the Airbag processor. The
|
||||
// Add an MDRawBreakpadInfo stream to the minidump, to provide additional
|
||||
// information about the exception handler to the Breakpad processor. The
|
||||
// information will help the processor determine which threads are
|
||||
// relevant. The Airbag processor does not require this information but
|
||||
// can function better with Airbag-generated dumps when it is present.
|
||||
// relevant. The Breakpad processor does not require this information but
|
||||
// can function better with Breakpad-generated dumps when it is present.
|
||||
// The native debugger is not harmed by the presence of this information.
|
||||
MDRawAirbagInfo airbag_info;
|
||||
airbag_info.validity = MD_AIRBAG_INFO_VALID_DUMP_THREAD_ID |
|
||||
MD_AIRBAG_INFO_VALID_REQUESTING_THREAD_ID;
|
||||
airbag_info.dump_thread_id = GetCurrentThreadId();
|
||||
airbag_info.requesting_thread_id = requesting_thread_id;
|
||||
MDRawBreakpadInfo breakpad_info;
|
||||
breakpad_info.validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID |
|
||||
MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID;
|
||||
breakpad_info.dump_thread_id = GetCurrentThreadId();
|
||||
breakpad_info.requesting_thread_id = requesting_thread_id;
|
||||
|
||||
// Leave room in user_stream_array for a possible assertion info stream.
|
||||
MINIDUMP_USER_STREAM user_stream_array[2];
|
||||
user_stream_array[0].Type = MD_AIRBAG_INFO_STREAM;
|
||||
user_stream_array[0].BufferSize = sizeof(airbag_info);
|
||||
user_stream_array[0].Buffer = &airbag_info;
|
||||
user_stream_array[0].Type = MD_BREAKPAD_INFO_STREAM;
|
||||
user_stream_array[0].BufferSize = sizeof(breakpad_info);
|
||||
user_stream_array[0].Buffer = &breakpad_info;
|
||||
|
||||
MINIDUMP_USER_STREAM_INFORMATION user_streams;
|
||||
user_streams.UserStreamCount = 1;
|
||||
@@ -479,4 +479,4 @@ void ExceptionHandler::UpdateNextID() {
|
||||
next_minidump_path_c_ = next_minidump_path_.c_str();
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -70,24 +70,24 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "google_airbag/common/minidump_format.h"
|
||||
#include "google_breakpad/common/minidump_format.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::vector;
|
||||
using std::wstring;
|
||||
|
||||
class ExceptionHandler {
|
||||
public:
|
||||
// A callback function to run before Airbag performs any substantial
|
||||
// A callback function to run before Breakpad performs any substantial
|
||||
// processing of an exception. A FilterCallback is called before writing
|
||||
// a minidump. context is the parameter supplied by the user as
|
||||
// callback_context when the handler was created. exinfo points to the
|
||||
// exception record, if any; assertion points to assertion information,
|
||||
// if any.
|
||||
//
|
||||
// If a FilterCallback returns true, Airbag will continue processing,
|
||||
// attempting to write a minidump. If a FilterCallback returns false, Airbag
|
||||
// If a FilterCallback returns true, Breakpad will continue processing,
|
||||
// attempting to write a minidump. If a FilterCallback returns false, Breakpad
|
||||
// will immediately report the exception as unhandled without writing a
|
||||
// minidump, allowing another handler the opportunity to handle it.
|
||||
typedef bool (*FilterCallback)(void *context, EXCEPTION_POINTERS *exinfo,
|
||||
@@ -102,11 +102,11 @@ class ExceptionHandler {
|
||||
// assertion points to information about an assertion if the handler was
|
||||
// invoked by an assertion.
|
||||
//
|
||||
// If an exception occurred and the callback returns true, Airbag will treat
|
||||
// If an exception occurred and the callback returns true, Breakpad will treat
|
||||
// the exception as fully-handled, suppressing any other handlers from being
|
||||
// notified of the exception. If the callback returns false, Airbag will
|
||||
// notified of the exception. If the callback returns false, Breakpad will
|
||||
// treat the exception as unhandled, and allow another handler to handle it.
|
||||
// If there are no other handlers, Airbag will report the exception to the
|
||||
// If there are no other handlers, Breakpad will report the exception to the
|
||||
// system as unhandled, allowing a debugger or native crash dialog the
|
||||
// opportunity to handle the exception. Most callback implementations
|
||||
// should normally return the value of |succeeded|, or when they wish to
|
||||
@@ -121,7 +121,7 @@ class ExceptionHandler {
|
||||
|
||||
// Creates a new ExceptionHandler instance to handle writing minidumps.
|
||||
// Before writing a minidump, the optional filter callback will be called.
|
||||
// Its return value determines whether or not Airbag should write a minidump.
|
||||
// Its return value determines whether or not Breakpad should write a minidump.
|
||||
// Minidump files will be written to dump_path, and the optional callback
|
||||
// is called after writing the dump file, as described above.
|
||||
// If install_handler is true, then a minidump will be written whenever
|
||||
@@ -298,7 +298,7 @@ class ExceptionHandler {
|
||||
// The index of the ExceptionHandler in handler_stack_ that will handle the
|
||||
// next exception. Note that 0 means the last entry in handler_stack_, 1
|
||||
// means the next-to-last entry, and so on. This is used by HandleException
|
||||
// to support multiple stacked Airbag handlers.
|
||||
// to support multiple stacked Breakpad handlers.
|
||||
static LONG handler_stack_index_;
|
||||
|
||||
// handler_stack_critical_section_ guards operations on handler_stack_ and
|
||||
@@ -313,7 +313,7 @@ class ExceptionHandler {
|
||||
void operator=(const ExceptionHandler &);
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#pragma warning( pop )
|
||||
|
||||
|
||||
@@ -295,7 +295,7 @@
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\google_airbag\common\minidump_format.h"
|
||||
RelativePath="..\..\..\google_breakpad\common\minidump_format.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
#include "client/windows/sender/crash_report_sender.h"
|
||||
#include "common/windows/http_upload.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
// static
|
||||
ReportResult CrashReportSender::SendCrashReport(
|
||||
@@ -55,4 +55,4 @@ ReportResult CrashReportSender::SendCrashReport(
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::wstring;
|
||||
using std::map;
|
||||
@@ -83,7 +83,7 @@ class CrashReportSender {
|
||||
~CrashReportSender();
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#pragma warning( pop )
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
// dump_syms.h: Interface for DumpSymbols. This class will take a mach-o file
|
||||
// and extract the symbol information and write it to a file using the
|
||||
// airbag symbol file format.
|
||||
// breakpad symbol file format.
|
||||
// NOTE: Only Stabs format is currently supported -- not DWARF.
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
//
|
||||
// Copyright (c) 2006, Google Inc.
|
||||
// All rights reserved.
|
||||
//
|
||||
@@ -45,7 +44,7 @@
|
||||
#import "dump_syms.h"
|
||||
#import "common/mac/file_id.h"
|
||||
|
||||
using google_airbag::FileID;
|
||||
using google_breakpad::FileID;
|
||||
|
||||
static NSString *kAddressSymbolKey = @"symbol";
|
||||
static NSString *kAddressConvertedSymbolKey = @"converted_symbol";
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
|
||||
// file_id.cc: Return a unique identifier for a file
|
||||
//
|
||||
// See file_id.h for documentation
|
||||
@@ -42,7 +42,7 @@
|
||||
|
||||
using MacFileUtilities::MachoID;
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
FileID::FileID(const char *path) {
|
||||
strlcpy(path_, path, sizeof(path_));
|
||||
@@ -101,4 +101,4 @@ void FileID::ConvertIdentifierToString(const unsigned char identifier[16],
|
||||
buffer[(buffer_idx < buffer_length) ? buffer_idx : buffer_idx - 1] = 0;
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
|
||||
// file_id.h: Return a unique identifier for a file
|
||||
//
|
||||
// Author: Dan Waylonis
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
class FileID {
|
||||
public:
|
||||
@@ -72,7 +72,7 @@ class FileID {
|
||||
char path_[PATH_MAX];
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // COMMON_MAC_FILE_ID_H__
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
|
||||
// macho_id.cc: Functions to gather identifying information from a macho file
|
||||
//
|
||||
// See macho_id.h for documentation
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
|
||||
// macho_id.h: Functions to gather identifying information from a macho file
|
||||
//
|
||||
// Author: Dan Waylonis
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
|
||||
// macho_walker.cc: Iterate over the load commands in a mach-o file
|
||||
//
|
||||
// See macho_walker.h for documentation
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
|
||||
// macho_walker.h: Iterate over the load commands in a mach-o file
|
||||
//
|
||||
// Author: Dan Waylonis
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
|
||||
namespace MacStringUtils {
|
||||
|
||||
using google_airbag::scoped_array;
|
||||
using google_breakpad::scoped_array;
|
||||
|
||||
std::string ConvertToString(CFStringRef str) {
|
||||
CFIndex length = CFStringGetLength(str);
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
using std::string;
|
||||
using std::vector;
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
void UTF8ToUTF16(const char *in, vector<u_int16_t> *out) {
|
||||
size_t source_length = strlen(in);
|
||||
@@ -151,4 +151,4 @@ string UTF16ToUTF8(const vector<u_int16_t> &in, bool swap) {
|
||||
return "";
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::vector;
|
||||
|
||||
@@ -60,6 +60,6 @@ void UTF32ToUTF16Char(wchar_t in, u_int16_t out[2]);
|
||||
// Convert |in| to UTF-8. If |swap| is true, swap bytes before converting.
|
||||
std::string UTF16ToUTF8(const vector<u_int16_t> &in, bool swap);
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // COMMON_STRING_CONVERSION_H__
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
|
||||
#include "common/windows/guid_string.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
// static
|
||||
wstring GUIDString::GUIDToWString(GUID *guid) {
|
||||
@@ -65,4 +65,4 @@ wstring GUIDString::GUIDToSymbolServerWString(GUID *guid) {
|
||||
return wstring(guid_string);
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::wstring;
|
||||
|
||||
@@ -53,6 +53,6 @@ class GUIDString {
|
||||
static wstring GUIDToSymbolServerWString(GUID *guid);
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // COMMON_WINDOWS_GUID_STRING_H__
|
||||
|
||||
@@ -38,12 +38,12 @@
|
||||
|
||||
#include "common/windows/http_upload.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::ifstream;
|
||||
using std::ios;
|
||||
|
||||
static const wchar_t kUserAgent[] = L"Airbag/1.0 (Windows)";
|
||||
static const wchar_t kUserAgent[] = L"Breakpad/1.0 (Windows)";
|
||||
|
||||
// Helper class which closes an internet handle when it goes away
|
||||
class HTTPUpload::AutoInternetHandle {
|
||||
@@ -368,4 +368,4 @@ bool HTTPUpload::CheckParameters(const map<wstring, wstring> ¶meters) {
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::string;
|
||||
using std::wstring;
|
||||
@@ -118,7 +118,7 @@ class HTTPUpload {
|
||||
~HTTPUpload();
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#pragma warning( pop )
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
#define UNDNAME_NO_ECSU 0x8000 // Suppresses enum/class/struct/union.
|
||||
#endif // UNDNAME_NO_ECSU
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
PDBSourceLineWriter::PDBSourceLineWriter() : output_(NULL) {
|
||||
}
|
||||
@@ -785,4 +785,4 @@ bool PDBSourceLineWriter::UsesGUID(bool *uses_guid) {
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -41,7 +41,7 @@ struct IDiaEnumLineNumbers;
|
||||
struct IDiaSession;
|
||||
struct IDiaSymbol;
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::wstring;
|
||||
|
||||
@@ -158,6 +158,6 @@ class PDBSourceLineWriter {
|
||||
void operator=(const PDBSourceLineWriter&);
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // _PDB_SOURCE_LINE_WRITER_H__
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
#define WIN_STRING_FORMAT_LL "I64"
|
||||
#endif // MSC_VER >= 1400
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::string;
|
||||
using std::wstring;
|
||||
@@ -140,6 +140,6 @@ inline void WindowsStringUtils::safe_wcsncpy(wchar_t *destination,
|
||||
#endif // _MSC_VER >= 1400
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // COMMON_WINDOWS_STRING_UTILS_INL_H__
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
#include "common/windows/string_utils-inl.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
// static
|
||||
wstring WindowsStringUtils::GetBaseName(const wstring &filename) {
|
||||
@@ -89,4 +89,4 @@ bool WindowsStringUtils::safe_mbstowcs(const string &mbs, wstring *wcs) {
|
||||
return true;
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
|
||||
|
||||
/* airbag_types.h: Precise-width types
|
||||
/* breakpad_types.h: Precise-width types
|
||||
*
|
||||
* (This is C99 source, please don't corrupt it with C++.)
|
||||
*
|
||||
@@ -37,8 +37,8 @@
|
||||
*
|
||||
* Author: Mark Mentovai */
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_COMMON_AIRBAG_TYPES_H__
|
||||
#define GOOGLE_AIRBAG_COMMON_AIRBAG_TYPES_H__
|
||||
#ifndef GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__
|
||||
#define GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
@@ -60,6 +60,6 @@ typedef struct {
|
||||
u_int64_t low;
|
||||
} u_int128_t;
|
||||
|
||||
typedef u_int64_t airbag_time_t;
|
||||
typedef u_int64_t breakpad_time_t;
|
||||
|
||||
#endif /* GOOGLE_AIRBAG_COMMON_AIRBAG_TYPES_H__ */
|
||||
#endif /* GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__ */
|
||||
@@ -64,11 +64,11 @@
|
||||
* Author: Mark Mentovai */
|
||||
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_COMMON_MINIDUMP_FORMAT_H__
|
||||
#define GOOGLE_AIRBAG_COMMON_MINIDUMP_FORMAT_H__
|
||||
#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__
|
||||
#define GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__
|
||||
|
||||
|
||||
#include "google_airbag/common/airbag_types.h"
|
||||
#include "google_breakpad/common/breakpad_types.h"
|
||||
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
@@ -195,7 +195,7 @@ typedef struct {
|
||||
/* CONTEXT_ALL */
|
||||
|
||||
/* Non-x86 CPU identifiers found in the high 26 bits of
|
||||
* (MDRawContext*).context_flags. These aren't used by Airbag, but are
|
||||
* (MDRawContext*).context_flags. These aren't used by Breakpad, but are
|
||||
* defined here for reference, to avoid assigning values that conflict
|
||||
* (although some values already conflict). */
|
||||
#define MD_CONTEXT_IA64 0x00080000 /* CONTEXT_IA64 */
|
||||
@@ -210,7 +210,7 @@ typedef struct {
|
||||
|
||||
|
||||
/*
|
||||
* Airbag minidump extension for PowerPC support. Based on Darwin/Mac OS X'
|
||||
* Breakpad minidump extension for PowerPC support. Based on Darwin/Mac OS X'
|
||||
* mach/ppc/_types.h
|
||||
*/
|
||||
|
||||
@@ -277,7 +277,7 @@ typedef struct {
|
||||
} MDRawContextPPC; /* Based on ppc_thread_state */
|
||||
|
||||
/* For (MDRawContextPPC).context_flags. These values indicate the type of
|
||||
* context stored in the structure. MD_CONTEXT_PPC is Airbag-defined. Its
|
||||
* context stored in the structure. MD_CONTEXT_PPC is Breakpad-defined. Its
|
||||
* value was chosen to avoid likely conflicts with MD_CONTEXT_* for other
|
||||
* CPUs. */
|
||||
#define MD_CONTEXT_PPC 0x20000000
|
||||
@@ -493,8 +493,8 @@ typedef enum {
|
||||
MD_MISC_INFO_STREAM = 15, /* MDRawMiscInfo */
|
||||
MD_LAST_RESERVED_STREAM = 0x0000ffff,
|
||||
|
||||
/* Airbag extension types. 0x4767 = "Gg" */
|
||||
MD_AIRBAG_INFO_STREAM = 0x47670001, /* MDRawAirbagInfo */
|
||||
/* Breakpad extension types. 0x4767 = "Gg" */
|
||||
MD_BREAKPAD_INFO_STREAM = 0x47670001, /* MDRawBreakpadInfo */
|
||||
MD_ASSERTION_INFO_STREAM = 0x47670002 /* MDRawAssertionInfo */
|
||||
} MDStreamType; /* MINIDUMP_STREAM_TYPE */
|
||||
|
||||
@@ -707,7 +707,7 @@ typedef enum {
|
||||
/* EXCEPTION_POSSIBLE_DEADLOCK */
|
||||
} MDExceptionCodeWin;
|
||||
|
||||
/* For (MDException).exception_code. Airbag minidump extension for Mac OS X
|
||||
/* For (MDException).exception_code. Breakpad minidump extension for Mac OS X
|
||||
* support. Based on Darwin/Mac OS X' mach/exception_types.h. This is
|
||||
* what Mac OS X calls an "exception", not a "code". */
|
||||
typedef enum {
|
||||
@@ -733,7 +733,7 @@ typedef enum {
|
||||
/* EXC_RPC_ALERT */
|
||||
} MDExceptionMac;
|
||||
|
||||
/* For (MDException).exception_flags. Airbag minidump extension for Mac OS X
|
||||
/* For (MDException).exception_flags. Breakpad minidump extension for Mac OS X
|
||||
* support. Based on Darwin/Mac OS X' mach/ppc/exception.h and
|
||||
* mach/i386/exception.h. This is what Mac OS X calls a "code". */
|
||||
typedef enum {
|
||||
@@ -944,7 +944,7 @@ typedef enum {
|
||||
MD_OS_WIN32_CE = 3, /* VER_PLATFORM_WIN32_CE, VER_PLATFORM_WIN32_HH
|
||||
* (Windows CE, Windows Mobile, "Handheld") */
|
||||
|
||||
/* The following values are Airbag-defined. */
|
||||
/* The following values are Breakpad-defined. */
|
||||
MD_OS_UNIX = 0x8000, /* Generic Unix-ish */
|
||||
MD_OS_MAC_OS_X = 0x8101, /* Mac OS X/Darwin */
|
||||
MD_OS_LINUX = 0x8201, /* Linux */
|
||||
@@ -993,12 +993,12 @@ typedef enum {
|
||||
|
||||
|
||||
/*
|
||||
* Airbag extension types
|
||||
* Breakpad extension types
|
||||
*/
|
||||
|
||||
|
||||
typedef struct {
|
||||
/* validity is a bitmask with values from MDAirbagInfoValidity, indicating
|
||||
/* validity is a bitmask with values from MDBreakpadInfoValidity, indicating
|
||||
* which of the other fields in the structure are valid. */
|
||||
u_int32_t validity;
|
||||
|
||||
@@ -1007,7 +1007,7 @@ typedef struct {
|
||||
* a dedicated thread in that list was used to produce the minidump. If
|
||||
* the MDRawThreadList does not contain a dedicated thread used to produce
|
||||
* the minidump, this field should be set to 0 and the validity field
|
||||
* must not contain MD_AIRBAG_INFO_VALID_DUMP_THREAD_ID. */
|
||||
* must not contain MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID. */
|
||||
u_int32_t dump_thread_id;
|
||||
|
||||
/* Thread ID of the thread that requested the minidump be produced. As
|
||||
@@ -1020,18 +1020,18 @@ typedef struct {
|
||||
* written. If the minidump was produced at the request of something
|
||||
* other than a thread in the MDRawThreadList, this field should be set
|
||||
* to 0 and the validity field must not contain
|
||||
* MD_AIRBAG_INFO_VALID_REQUESTING_THREAD_ID. */
|
||||
* MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID. */
|
||||
u_int32_t requesting_thread_id;
|
||||
} MDRawAirbagInfo;
|
||||
} MDRawBreakpadInfo;
|
||||
|
||||
/* For (MDRawAirbagInfo).validity: */
|
||||
/* For (MDRawBreakpadInfo).validity: */
|
||||
typedef enum {
|
||||
/* When set, the dump_thread_id field is valid. */
|
||||
MD_AIRBAG_INFO_VALID_DUMP_THREAD_ID = 1 << 0,
|
||||
MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID = 1 << 0,
|
||||
|
||||
/* When set, the requesting_thread_id field is valid. */
|
||||
MD_AIRBAG_INFO_VALID_REQUESTING_THREAD_ID = 1 << 1
|
||||
} MDAirbagInfoValidity;
|
||||
MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID = 1 << 1
|
||||
} MDBreakpadInfoValidity;
|
||||
|
||||
typedef struct {
|
||||
/* expression, function, and file are 0-terminated UTF-16 strings. They
|
||||
@@ -1060,4 +1060,4 @@ typedef enum {
|
||||
#endif /* _MSC_VER */
|
||||
|
||||
|
||||
#endif /* GOOGLE_AIRBAG_COMMON_MINIDUMP_FORMAT_H__ */
|
||||
#endif /* GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__ */
|
||||
@@ -30,14 +30,14 @@
|
||||
// BasicSourceLineResolver implements SourceLineResolverInterface, using
|
||||
// address map files produced by a compatible writer, e.g. PDBSourceLineWriter.
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__
|
||||
#define GOOGLE_AIRBAG_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__
|
||||
#ifndef GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__
|
||||
#define GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__
|
||||
|
||||
#include <ext/hash_map>
|
||||
|
||||
#include "google_airbag/processor/source_line_resolver_interface.h"
|
||||
#include "google_breakpad/processor/source_line_resolver_interface.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::string;
|
||||
using __gnu_cxx::hash_map;
|
||||
@@ -79,6 +79,6 @@ class BasicSourceLineResolver : public SourceLineResolverInterface {
|
||||
void operator=(const BasicSourceLineResolver&);
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // GOOGLE_AIRBAG_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__
|
||||
#endif // GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__
|
||||
@@ -42,12 +42,12 @@
|
||||
//
|
||||
// Author: Mark Mentovai
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_CALL_STACK_H__
|
||||
#define GOOGLE_AIRBAG_PROCESSOR_CALL_STACK_H__
|
||||
#ifndef GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__
|
||||
#define GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__
|
||||
|
||||
#include <vector>
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::vector;
|
||||
|
||||
@@ -72,6 +72,6 @@ class CallStack {
|
||||
vector<StackFrame*> frames_;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // GOOGLE_AIRBAG_PROCSSOR_CALL_STACK_H__
|
||||
#endif // GOOGLE_BREAKPAD_PROCSSOR_CALL_STACK_H__
|
||||
@@ -32,12 +32,12 @@
|
||||
//
|
||||
// Author: Mark Mentovai
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_CODE_MODULE_H__
|
||||
#define GOOGLE_AIRBAG_PROCESSOR_CODE_MODULE_H__
|
||||
#ifndef GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULE_H__
|
||||
#define GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULE_H__
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::string;
|
||||
|
||||
@@ -88,6 +88,6 @@ class CodeModule {
|
||||
virtual const CodeModule* Copy() const = 0;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // GOOGLE_AIRBAG_PROCESSOR_CODE_MODULE_H__
|
||||
#endif // GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULE_H__
|
||||
@@ -32,12 +32,12 @@
|
||||
//
|
||||
// Author: Mark Mentovai
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_CODE_MODULES_H__
|
||||
#define GOOGLE_AIRBAG_PROCESSOR_CODE_MODULES_H__
|
||||
#ifndef GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__
|
||||
#define GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__
|
||||
|
||||
#include "google_airbag/common/airbag_types.h"
|
||||
#include "google_breakpad/common/breakpad_types.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
class CodeModule;
|
||||
|
||||
@@ -93,6 +93,6 @@ class CodeModules {
|
||||
virtual const CodeModules* Copy() const = 0;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // GOOGLE_AIRBAG_PROCESSOR_CODE_MODULES_H__
|
||||
#endif // GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__
|
||||
@@ -35,14 +35,14 @@
|
||||
//
|
||||
// Author: Mark Mentovai
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_MEMORY_REGION_H__
|
||||
#define GOOGLE_AIRBAG_PROCESSOR_MEMORY_REGION_H__
|
||||
#ifndef GOOGLE_BREAKPAD_PROCESSOR_MEMORY_REGION_H__
|
||||
#define GOOGLE_BREAKPAD_PROCESSOR_MEMORY_REGION_H__
|
||||
|
||||
|
||||
#include "google_airbag/common/airbag_types.h"
|
||||
#include "google_breakpad/common/breakpad_types.h"
|
||||
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
|
||||
class MemoryRegion {
|
||||
@@ -70,7 +70,7 @@ class MemoryRegion {
|
||||
};
|
||||
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
|
||||
#endif // GOOGLE_AIRBAG_PROCESSOR_MEMORY_REGION_H__
|
||||
#endif // GOOGLE_BREAKPAD_PROCESSOR_MEMORY_REGION_H__
|
||||
@@ -76,21 +76,21 @@
|
||||
//
|
||||
// Author: Mark Mentovai
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_MINIDUMP_H__
|
||||
#define GOOGLE_AIRBAG_PROCESSOR_MINIDUMP_H__
|
||||
#ifndef GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_H__
|
||||
#define GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_H__
|
||||
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "google_airbag/common/minidump_format.h"
|
||||
#include "google_airbag/processor/code_module.h"
|
||||
#include "google_airbag/processor/code_modules.h"
|
||||
#include "google_airbag/processor/memory_region.h"
|
||||
#include "google_breakpad/common/minidump_format.h"
|
||||
#include "google_breakpad/processor/code_module.h"
|
||||
#include "google_breakpad/processor/code_modules.h"
|
||||
#include "google_breakpad/processor/memory_region.h"
|
||||
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
|
||||
using std::map;
|
||||
@@ -370,7 +370,7 @@ class MinidumpModule : public MinidumpObject,
|
||||
// The CodeView record, which contains information to locate the module's
|
||||
// debugging information (pdb). This is returned as u_int8_t* because
|
||||
// the data can be of types MDCVInfoPDB20* or MDCVInfoPDB70*, or it may be
|
||||
// of a type unknown to Airbag, in which case the raw data will still be
|
||||
// of a type unknown to Breakpad, in which case the raw data will still be
|
||||
// returned but no byte-swapping will have been performed. Check the
|
||||
// record's signature in the first four bytes to differentiate between
|
||||
// the various types. Current toolchains generate modules which carry
|
||||
@@ -649,18 +649,18 @@ class MinidumpMiscInfo : public MinidumpStream {
|
||||
};
|
||||
|
||||
|
||||
// MinidumpAirbagInfo wraps MDRawAirbagInfo, which is an optional stream in
|
||||
// MinidumpBreakpadInfo wraps MDRawBreakpadInfo, which is an optional stream in
|
||||
// a minidump that provides additional information about the process state
|
||||
// at the time the minidump was generated.
|
||||
class MinidumpAirbagInfo : public MinidumpStream {
|
||||
class MinidumpBreakpadInfo : public MinidumpStream {
|
||||
public:
|
||||
const MDRawAirbagInfo* airbag_info() const {
|
||||
return valid_ ? &airbag_info_ : NULL;
|
||||
const MDRawBreakpadInfo* breakpad_info() const {
|
||||
return valid_ ? &breakpad_info_ : NULL;
|
||||
}
|
||||
|
||||
// These thread IDs are used to determine if threads deserve special
|
||||
// treatment, so special getters are provided to retrieve this data from
|
||||
// the MDRawAirbagInfo structure. The getters return false if the thread
|
||||
// the MDRawBreakpadInfo structure. The getters return false if the thread
|
||||
// IDs cannot be determined.
|
||||
bool GetDumpThreadID(u_int32_t *thread_id) const;
|
||||
bool GetRequestingThreadID(u_int32_t *thread_id) const;
|
||||
@@ -671,13 +671,13 @@ class MinidumpAirbagInfo : public MinidumpStream {
|
||||
private:
|
||||
friend class Minidump;
|
||||
|
||||
static const u_int32_t kStreamType = MD_AIRBAG_INFO_STREAM;
|
||||
static const u_int32_t kStreamType = MD_BREAKPAD_INFO_STREAM;
|
||||
|
||||
explicit MinidumpAirbagInfo(Minidump* minidump_);
|
||||
explicit MinidumpBreakpadInfo(Minidump* minidump_);
|
||||
|
||||
bool Read(u_int32_t expected_size_);
|
||||
|
||||
MDRawAirbagInfo airbag_info_;
|
||||
MDRawBreakpadInfo breakpad_info_;
|
||||
};
|
||||
|
||||
|
||||
@@ -708,7 +708,7 @@ class Minidump {
|
||||
MinidumpException* GetException();
|
||||
MinidumpSystemInfo* GetSystemInfo();
|
||||
MinidumpMiscInfo* GetMiscInfo();
|
||||
MinidumpAirbagInfo* GetAirbagInfo();
|
||||
MinidumpBreakpadInfo* GetBreakpadInfo();
|
||||
|
||||
// The next set of methods are provided for users who wish to access
|
||||
// data in minidump files directly, while leveraging the rest of
|
||||
@@ -807,7 +807,7 @@ class Minidump {
|
||||
};
|
||||
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
|
||||
#endif // GOOGLE_AIRBAG_PROCESSOR_MINIDUMP_H__
|
||||
#endif // GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_H__
|
||||
@@ -27,12 +27,12 @@
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_MINIDUMP_PROCESSOR_H__
|
||||
#define GOOGLE_AIRBAG_PROCESSOR_MINIDUMP_PROCESSOR_H__
|
||||
#ifndef GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_PROCESSOR_H__
|
||||
#define GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_PROCESSOR_H__
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::string;
|
||||
|
||||
@@ -86,6 +86,6 @@ class MinidumpProcessor {
|
||||
SourceLineResolverInterface *resolver_;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // GOOGLE_AIRBAG_PROCESSOR_MINIDUMP_PROCESSOR_H__
|
||||
#endif // GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_PROCESSOR_H__
|
||||
@@ -31,14 +31,14 @@
|
||||
//
|
||||
// Author: Mark Mentovai
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_PROCESS_STATE_H__
|
||||
#define GOOGLE_AIRBAG_PROCESSOR_PROCESS_STATE_H__
|
||||
#ifndef GOOGLE_BREAKPAD_PROCESSOR_PROCESS_STATE_H__
|
||||
#define GOOGLE_BREAKPAD_PROCESSOR_PROCESS_STATE_H__
|
||||
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "google_airbag/processor/system_info.h"
|
||||
#include "google_breakpad/processor/system_info.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::string;
|
||||
using std::vector;
|
||||
@@ -90,10 +90,10 @@ class ProcessState {
|
||||
// The index of the thread that requested a dump be written in the
|
||||
// threads vector. If a dump was produced as a result of a crash, this
|
||||
// will point to the thread that crashed. If the dump was produced as
|
||||
// by user code without crashing, and the dump contains extended Airbag
|
||||
// by user code without crashing, and the dump contains extended Breakpad
|
||||
// information, this will point to the thread that requested the dump.
|
||||
// If the dump was not produced as a result of an exception and no
|
||||
// extended Airbag information is present, this field will be set to -1,
|
||||
// extended Breakpad information is present, this field will be set to -1,
|
||||
// indicating that the dump thread is not available.
|
||||
int requesting_thread_;
|
||||
|
||||
@@ -109,6 +109,6 @@ class ProcessState {
|
||||
const CodeModules *modules_;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // GOOGLE_AIRBAG_PROCESSOR_PROCESS_STATE_H__
|
||||
#endif // GOOGLE_BREAKPAD_PROCESSOR_PROCESS_STATE_H__
|
||||
@@ -29,13 +29,13 @@
|
||||
|
||||
// Abstract interface to return function/file/line info for a memory address.
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__
|
||||
#define GOOGLE_AIRBAG_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__
|
||||
#ifndef GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__
|
||||
#define GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__
|
||||
|
||||
#include <string>
|
||||
#include "google_airbag/common/airbag_types.h"
|
||||
#include "google_breakpad/common/breakpad_types.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::string;
|
||||
|
||||
@@ -74,6 +74,6 @@ class SourceLineResolverInterface {
|
||||
SourceLineResolverInterface() {}
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // GOOGLE_AIRBAG_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__
|
||||
#endif // GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__
|
||||
@@ -27,13 +27,13 @@
|
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_STACK_FRAME_H__
|
||||
#define GOOGLE_AIRBAG_PROCESSOR_STACK_FRAME_H__
|
||||
#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_H__
|
||||
#define GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_H__
|
||||
|
||||
#include <string>
|
||||
#include "google_airbag/common/airbag_types.h"
|
||||
#include "google_breakpad/common/breakpad_types.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
class CodeModule;
|
||||
|
||||
@@ -79,6 +79,6 @@ struct StackFrame {
|
||||
u_int64_t source_line_base;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // GOOGLE_AIRBAG_PROCESSOR_STACK_FRAME_H__
|
||||
#endif // GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_H__
|
||||
@@ -36,13 +36,13 @@
|
||||
//
|
||||
// Author: Mark Mentovai
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_STACK_FRAME_CPU_H__
|
||||
#define GOOGLE_AIRBAG_PROCESSOR_STACK_FRAME_CPU_H__
|
||||
#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_CPU_H__
|
||||
#define GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_CPU_H__
|
||||
|
||||
#include "google_airbag/common/minidump_format.h"
|
||||
#include "google_airbag/processor/stack_frame.h"
|
||||
#include "google_breakpad/common/minidump_format.h"
|
||||
#include "google_breakpad/processor/stack_frame.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
struct StackFrameX86 : public StackFrame {
|
||||
// ContextValidity has one entry for each relevant hardware pointer register
|
||||
@@ -98,6 +98,6 @@ struct StackFramePPC : public StackFrame {
|
||||
int context_validity;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // GOOGLE_AIRBAG_PROCESSOR_STACK_FRAME_CPU_H__
|
||||
#endif // GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_CPU_H__
|
||||
@@ -38,12 +38,12 @@
|
||||
// Author: Mark Mentovai
|
||||
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_STACKWALKER_H__
|
||||
#define GOOGLE_AIRBAG_PROCESSOR_STACKWALKER_H__
|
||||
#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__
|
||||
#define GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__
|
||||
|
||||
#include <vector>
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
class CallStack;
|
||||
class CodeModules;
|
||||
@@ -134,7 +134,7 @@ class Stackwalker {
|
||||
};
|
||||
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
|
||||
#endif // GOOGLE_AIRBAG_PROCESSOR_STACKWALKER_H__
|
||||
#endif // GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__
|
||||
@@ -30,12 +30,12 @@
|
||||
// The caller may implement the SymbolSupplier abstract base class
|
||||
// to provide symbols for a given module.
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_SYMBOL_SUPPLIER_H__
|
||||
#define GOOGLE_AIRBAG_PROCESSOR_SYMBOL_SUPPLIER_H__
|
||||
#ifndef GOOGLE_BREAKPAD_PROCESSOR_SYMBOL_SUPPLIER_H__
|
||||
#define GOOGLE_BREAKPAD_PROCESSOR_SYMBOL_SUPPLIER_H__
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::string;
|
||||
class CodeModule;
|
||||
@@ -67,6 +67,6 @@ class SymbolSupplier {
|
||||
string *symbol_file) = 0;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // GOOGLE_AIRBAG_PROCESSOR_SYMBOL_SUPPLIER_H__
|
||||
#endif // GOOGLE_BREAKPAD_PROCESSOR_SYMBOL_SUPPLIER_H__
|
||||
@@ -32,12 +32,12 @@
|
||||
//
|
||||
// Author: Mark Mentovai
|
||||
|
||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_SYSTEM_INFO_H__
|
||||
#define GOOGLE_AIRBAG_PROCESSOR_SYSTEM_INFO_H__
|
||||
#ifndef GOOGLE_BREAKPAD_PROCESSOR_SYSTEM_INFO_H__
|
||||
#define GOOGLE_BREAKPAD_PROCESSOR_SYSTEM_INFO_H__
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::string;
|
||||
|
||||
@@ -84,6 +84,6 @@ struct SystemInfo {
|
||||
string cpu_info;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // GOOGLE_AIRBAG_PROCESSOR_SYSTEM_INFO_H__
|
||||
#endif // GOOGLE_BREAKPAD_PROCESSOR_SYSTEM_INFO_H__
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
#include "processor/address_map.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
template<typename AddressType, typename EntryType>
|
||||
bool AddressMap<AddressType, EntryType>::Store(const AddressType &address,
|
||||
@@ -81,6 +81,6 @@ void AddressMap<AddressType, EntryType>::Clear() {
|
||||
map_.clear();
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // PROCESSOR_ADDRESS_MAP_INL_H__
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
|
||||
#include <map>
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
template<typename AddressType, typename EntryType>
|
||||
class AddressMap {
|
||||
@@ -74,7 +74,7 @@ class AddressMap {
|
||||
AddressToEntryMap map_;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // PROCESSOR_ADDRESS_MAP_H__
|
||||
|
||||
|
||||
@@ -49,8 +49,8 @@
|
||||
|
||||
namespace {
|
||||
|
||||
using google_airbag::AddressMap;
|
||||
using google_airbag::linked_ptr;
|
||||
using google_breakpad::AddressMap;
|
||||
using google_breakpad::linked_ptr;
|
||||
|
||||
// A CountedObject holds an int. A global (not thread safe!) count of
|
||||
// allocated CountedObjects is maintained to help test memory management.
|
||||
|
||||
@@ -43,9 +43,9 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "google_airbag/processor/code_module.h"
|
||||
#include "google_breakpad/processor/code_module.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::string;
|
||||
|
||||
@@ -90,6 +90,6 @@ class BasicCodeModule : public CodeModule {
|
||||
void operator=(const BasicCodeModule &that);
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // PROCESSOR_BASIC_CODE_MODULE_H__
|
||||
|
||||
@@ -37,11 +37,11 @@
|
||||
#include <cassert>
|
||||
|
||||
#include "processor/basic_code_modules.h"
|
||||
#include "google_airbag/processor/code_module.h"
|
||||
#include "google_breakpad/processor/code_module.h"
|
||||
#include "processor/linked_ptr.h"
|
||||
#include "processor/range_map-inl.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
BasicCodeModules::BasicCodeModules(const CodeModules *that)
|
||||
: main_address_(0),
|
||||
@@ -109,4 +109,4 @@ const CodeModules* BasicCodeModules::Copy() const {
|
||||
return new BasicCodeModules(this);
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -41,9 +41,9 @@
|
||||
#ifndef PROCESSOR_BASIC_CODE_MODULES_H__
|
||||
#define PROCESSOR_BASIC_CODE_MODULES_H__
|
||||
|
||||
#include "google_airbag/processor/code_modules.h"
|
||||
#include "google_breakpad/processor/code_modules.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
template<typename T> class linked_ptr;
|
||||
template<typename AddressType, typename EntryType> class RangeMap;
|
||||
@@ -80,6 +80,6 @@ class BasicCodeModules : public CodeModules {
|
||||
void operator=(const BasicCodeModules &that);
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // PROCESSOR_BASIC_CODE_MODULES_H__
|
||||
|
||||
@@ -38,9 +38,9 @@
|
||||
#include "processor/contained_range_map-inl.h"
|
||||
#include "processor/range_map-inl.h"
|
||||
|
||||
#include "google_airbag/processor/basic_source_line_resolver.h"
|
||||
#include "google_airbag/processor/code_module.h"
|
||||
#include "google_airbag/processor/stack_frame.h"
|
||||
#include "google_breakpad/processor/basic_source_line_resolver.h"
|
||||
#include "google_breakpad/processor/code_module.h"
|
||||
#include "google_breakpad/processor/stack_frame.h"
|
||||
#include "processor/linked_ptr.h"
|
||||
#include "processor/scoped_ptr.h"
|
||||
#include "processor/stack_frame_info.h"
|
||||
@@ -50,7 +50,7 @@ using std::vector;
|
||||
using std::make_pair;
|
||||
using __gnu_cxx::hash;
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
struct BasicSourceLineResolver::Line {
|
||||
Line(MemAddr addr, MemAddr code_size, int file_id, int source_line)
|
||||
@@ -558,4 +558,4 @@ size_t BasicSourceLineResolver::HashString::operator()(const string &s) const {
|
||||
return hash<const char*>()(s.c_str());
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -29,9 +29,9 @@
|
||||
|
||||
#include <cstdio>
|
||||
#include <string>
|
||||
#include "google_airbag/processor/basic_source_line_resolver.h"
|
||||
#include "google_airbag/processor/code_module.h"
|
||||
#include "google_airbag/processor/stack_frame.h"
|
||||
#include "google_breakpad/processor/basic_source_line_resolver.h"
|
||||
#include "google_breakpad/processor/code_module.h"
|
||||
#include "google_breakpad/processor/stack_frame.h"
|
||||
#include "processor/linked_ptr.h"
|
||||
#include "processor/scoped_ptr.h"
|
||||
#include "processor/stack_frame_info.h"
|
||||
@@ -49,12 +49,12 @@
|
||||
namespace {
|
||||
|
||||
using std::string;
|
||||
using google_airbag::BasicSourceLineResolver;
|
||||
using google_airbag::CodeModule;
|
||||
using google_airbag::linked_ptr;
|
||||
using google_airbag::scoped_ptr;
|
||||
using google_airbag::StackFrame;
|
||||
using google_airbag::StackFrameInfo;
|
||||
using google_breakpad::BasicSourceLineResolver;
|
||||
using google_breakpad::CodeModule;
|
||||
using google_breakpad::linked_ptr;
|
||||
using google_breakpad::scoped_ptr;
|
||||
using google_breakpad::StackFrame;
|
||||
using google_breakpad::StackFrameInfo;
|
||||
|
||||
class TestCodeModule : public CodeModule {
|
||||
public:
|
||||
|
||||
@@ -33,10 +33,10 @@
|
||||
//
|
||||
// Author: Mark Mentovai
|
||||
|
||||
#include "google_airbag/processor/call_stack.h"
|
||||
#include "google_airbag/processor/stack_frame.h"
|
||||
#include "google_breakpad/processor/call_stack.h"
|
||||
#include "google_breakpad/processor/stack_frame.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
CallStack::~CallStack() {
|
||||
Clear();
|
||||
@@ -50,4 +50,4 @@ void CallStack::Clear() {
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
#include "processor/contained_range_map.h"
|
||||
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
|
||||
template<typename AddressType, typename EntryType>
|
||||
@@ -166,7 +166,7 @@ void ContainedRangeMap<AddressType, EntryType>::Clear() {
|
||||
}
|
||||
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
|
||||
#endif // PROCESSOR_CONTAINED_RANGE_MAP_INL_H__
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
#include <map>
|
||||
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
|
||||
template<typename AddressType, typename EntryType>
|
||||
@@ -140,7 +140,7 @@ class ContainedRangeMap {
|
||||
};
|
||||
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
|
||||
#endif // PROCESSOR_CONTAINED_RANGE_MAP_H__
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
namespace {
|
||||
|
||||
|
||||
using google_airbag::ContainedRangeMap;
|
||||
using google_breakpad::ContainedRangeMap;
|
||||
|
||||
|
||||
static bool RunTests() {
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
#ifndef PROCESSOR_LINKED_PTR_H__
|
||||
#define PROCESSOR_LINKED_PTR_H__
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
// This is used internally by all instances of linked_ptr<>. It needs to be
|
||||
// a non-template class because different types of linked_ptr<> can refer to
|
||||
@@ -188,6 +188,6 @@ linked_ptr<T> make_linked_ptr(T* ptr) {
|
||||
return linked_ptr<T>(ptr);
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // PROCESSOR_LINKED_PTR_H__
|
||||
|
||||
@@ -54,13 +54,13 @@ typedef SSIZE_T ssize_t;
|
||||
|
||||
#include "processor/range_map-inl.h"
|
||||
|
||||
#include "google_airbag/processor/minidump.h"
|
||||
#include "google_breakpad/processor/minidump.h"
|
||||
#include "processor/basic_code_module.h"
|
||||
#include "processor/basic_code_modules.h"
|
||||
#include "processor/scoped_ptr.h"
|
||||
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
|
||||
using std::vector;
|
||||
@@ -1280,7 +1280,7 @@ string MinidumpModule::debug_identifier() const {
|
||||
// miscellaneous debug record. It only carries a filename, though, and no
|
||||
// identifier. I'm not sure what the right thing to do for the identifier
|
||||
// is in that case, but I don't expect to find many modules without a
|
||||
// CodeView record (or some other Airbag extension structure in place of
|
||||
// CodeView record (or some other Breakpad extension structure in place of
|
||||
// a CodeView record). Treat it as an error (empty identifier) for now.
|
||||
|
||||
// TODO(mmentovai): on the Mac, provide fallbacks as in code_identifier().
|
||||
@@ -1399,7 +1399,7 @@ const u_int8_t* MinidumpModule::GetCVRecord(u_int32_t* size) {
|
||||
}
|
||||
|
||||
// If the signature doesn't match something above, it's not something
|
||||
// that Airbag can presently handle directly. Because some modules in
|
||||
// that Breakpad can presently handle directly. Because some modules in
|
||||
// the wild contain such CodeView records as MD_CVINFOCV50_SIGNATURE,
|
||||
// don't bail out here - allow the data to be returned to the user,
|
||||
// although byte-swapping can't be done.
|
||||
@@ -2323,29 +2323,29 @@ void MinidumpMiscInfo::Print() {
|
||||
|
||||
|
||||
//
|
||||
// MinidumpAirbagInfo
|
||||
// MinidumpBreakpadInfo
|
||||
//
|
||||
|
||||
|
||||
MinidumpAirbagInfo::MinidumpAirbagInfo(Minidump* minidump)
|
||||
MinidumpBreakpadInfo::MinidumpBreakpadInfo(Minidump* minidump)
|
||||
: MinidumpStream(minidump),
|
||||
airbag_info_() {
|
||||
breakpad_info_() {
|
||||
}
|
||||
|
||||
|
||||
bool MinidumpAirbagInfo::Read(u_int32_t expected_size) {
|
||||
bool MinidumpBreakpadInfo::Read(u_int32_t expected_size) {
|
||||
valid_ = false;
|
||||
|
||||
if (expected_size != sizeof(airbag_info_))
|
||||
if (expected_size != sizeof(breakpad_info_))
|
||||
return false;
|
||||
|
||||
if (!minidump_->ReadBytes(&airbag_info_, sizeof(airbag_info_)))
|
||||
if (!minidump_->ReadBytes(&breakpad_info_, sizeof(breakpad_info_)))
|
||||
return false;
|
||||
|
||||
if (minidump_->swap()) {
|
||||
Swap(&airbag_info_.validity);
|
||||
Swap(&airbag_info_.dump_thread_id);
|
||||
Swap(&airbag_info_.requesting_thread_id);
|
||||
Swap(&breakpad_info_.validity);
|
||||
Swap(&breakpad_info_.dump_thread_id);
|
||||
Swap(&breakpad_info_.requesting_thread_id);
|
||||
}
|
||||
|
||||
valid_ = true;
|
||||
@@ -2353,45 +2353,45 @@ bool MinidumpAirbagInfo::Read(u_int32_t expected_size) {
|
||||
}
|
||||
|
||||
|
||||
bool MinidumpAirbagInfo::GetDumpThreadID(u_int32_t *thread_id) const {
|
||||
bool MinidumpBreakpadInfo::GetDumpThreadID(u_int32_t *thread_id) const {
|
||||
if (!thread_id || !valid_ ||
|
||||
!(airbag_info_.validity & MD_AIRBAG_INFO_VALID_DUMP_THREAD_ID)) {
|
||||
!(breakpad_info_.validity & MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
*thread_id = airbag_info_.dump_thread_id;
|
||||
*thread_id = breakpad_info_.dump_thread_id;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool MinidumpAirbagInfo::GetRequestingThreadID(u_int32_t *thread_id)
|
||||
bool MinidumpBreakpadInfo::GetRequestingThreadID(u_int32_t *thread_id)
|
||||
const {
|
||||
if (!thread_id || !valid_ ||
|
||||
!(airbag_info_.validity & MD_AIRBAG_INFO_VALID_REQUESTING_THREAD_ID)) {
|
||||
!(breakpad_info_.validity & MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
*thread_id = airbag_info_.requesting_thread_id;
|
||||
*thread_id = breakpad_info_.requesting_thread_id;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void MinidumpAirbagInfo::Print() {
|
||||
void MinidumpBreakpadInfo::Print() {
|
||||
if (!valid_)
|
||||
return;
|
||||
|
||||
printf("MDRawAirbagInfo\n");
|
||||
printf(" validity = 0x%x\n", airbag_info_.validity);
|
||||
printf("MDRawBreakpadInfo\n");
|
||||
printf(" validity = 0x%x\n", breakpad_info_.validity);
|
||||
|
||||
if (airbag_info_.validity & MD_AIRBAG_INFO_VALID_DUMP_THREAD_ID) {
|
||||
printf(" dump_thread_id = 0x%x\n", airbag_info_.dump_thread_id);
|
||||
if (breakpad_info_.validity & MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID) {
|
||||
printf(" dump_thread_id = 0x%x\n", breakpad_info_.dump_thread_id);
|
||||
} else {
|
||||
printf(" dump_thread_id = (invalid)\n");
|
||||
}
|
||||
|
||||
if (airbag_info_.validity & MD_AIRBAG_INFO_VALID_DUMP_THREAD_ID) {
|
||||
if (breakpad_info_.validity & MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID) {
|
||||
printf(" requesting_thread_id = 0x%x\n",
|
||||
airbag_info_.requesting_thread_id);
|
||||
breakpad_info_.requesting_thread_id);
|
||||
} else {
|
||||
printf(" requesting_thread_id = (invalid)\n");
|
||||
}
|
||||
@@ -2523,7 +2523,7 @@ bool Minidump::Read() {
|
||||
case MD_EXCEPTION_STREAM:
|
||||
case MD_SYSTEM_INFO_STREAM:
|
||||
case MD_MISC_INFO_STREAM:
|
||||
case MD_AIRBAG_INFO_STREAM: {
|
||||
case MD_BREAKPAD_INFO_STREAM: {
|
||||
if (stream_map_->find(stream_type) != stream_map_->end()) {
|
||||
// Another stream with this type was already found. A minidump
|
||||
// file should contain at most one of each of these stream types.
|
||||
@@ -2584,9 +2584,9 @@ MinidumpMiscInfo* Minidump::GetMiscInfo() {
|
||||
}
|
||||
|
||||
|
||||
MinidumpAirbagInfo* Minidump::GetAirbagInfo() {
|
||||
MinidumpAirbagInfo* airbag_info;
|
||||
return GetStream(&airbag_info);
|
||||
MinidumpBreakpadInfo* Minidump::GetBreakpadInfo() {
|
||||
MinidumpBreakpadInfo* breakpad_info;
|
||||
return GetStream(&breakpad_info);
|
||||
}
|
||||
|
||||
|
||||
@@ -2766,4 +2766,4 @@ T* Minidump::GetStream(T** stream) {
|
||||
}
|
||||
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -34,18 +34,18 @@
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
#include "google_airbag/processor/minidump.h"
|
||||
#include "google_breakpad/processor/minidump.h"
|
||||
|
||||
namespace {
|
||||
|
||||
using google_airbag::Minidump;
|
||||
using google_airbag::MinidumpThreadList;
|
||||
using google_airbag::MinidumpModuleList;
|
||||
using google_airbag::MinidumpMemoryList;
|
||||
using google_airbag::MinidumpException;
|
||||
using google_airbag::MinidumpSystemInfo;
|
||||
using google_airbag::MinidumpMiscInfo;
|
||||
using google_airbag::MinidumpAirbagInfo;
|
||||
using google_breakpad::Minidump;
|
||||
using google_breakpad::MinidumpThreadList;
|
||||
using google_breakpad::MinidumpModuleList;
|
||||
using google_breakpad::MinidumpMemoryList;
|
||||
using google_breakpad::MinidumpException;
|
||||
using google_breakpad::MinidumpSystemInfo;
|
||||
using google_breakpad::MinidumpMiscInfo;
|
||||
using google_breakpad::MinidumpBreakpadInfo;
|
||||
|
||||
static bool PrintMinidumpDump(const char *minidump_file) {
|
||||
Minidump minidump(minidump_file);
|
||||
@@ -105,12 +105,12 @@ static bool PrintMinidumpDump(const char *minidump_file) {
|
||||
misc_info->Print();
|
||||
}
|
||||
|
||||
MinidumpAirbagInfo *airbag_info = minidump.GetAirbagInfo();
|
||||
if (!airbag_info) {
|
||||
// Airbag info is optional, so don't treat this as an error.
|
||||
printf("minidump.GetAirbagInfo() failed\n");
|
||||
MinidumpBreakpadInfo *breakpad_info = minidump.GetBreakpadInfo();
|
||||
if (!breakpad_info) {
|
||||
// Breakpad info is optional, so don't treat this as an error.
|
||||
printf("minidump.GetBreakpadInfo() failed\n");
|
||||
} else {
|
||||
airbag_info->Print();
|
||||
breakpad_info->Print();
|
||||
}
|
||||
|
||||
return errors == 0;
|
||||
|
||||
@@ -29,14 +29,14 @@
|
||||
|
||||
#include <cassert>
|
||||
|
||||
#include "google_airbag/processor/minidump_processor.h"
|
||||
#include "google_airbag/processor/call_stack.h"
|
||||
#include "google_airbag/processor/minidump.h"
|
||||
#include "google_airbag/processor/process_state.h"
|
||||
#include "google_breakpad/processor/minidump_processor.h"
|
||||
#include "google_breakpad/processor/call_stack.h"
|
||||
#include "google_breakpad/processor/minidump.h"
|
||||
#include "google_breakpad/processor/process_state.h"
|
||||
#include "processor/scoped_ptr.h"
|
||||
#include "processor/stackwalker_x86.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier,
|
||||
SourceLineResolverInterface *resolver)
|
||||
@@ -67,11 +67,11 @@ MinidumpProcessor::ProcessResult MinidumpProcessor::Process(
|
||||
u_int32_t requesting_thread_id = 0;
|
||||
bool has_requesting_thread = false;
|
||||
|
||||
MinidumpAirbagInfo *airbag_info = dump.GetAirbagInfo();
|
||||
if (airbag_info) {
|
||||
has_dump_thread = airbag_info->GetDumpThreadID(&dump_thread_id);
|
||||
MinidumpBreakpadInfo *breakpad_info = dump.GetBreakpadInfo();
|
||||
if (breakpad_info) {
|
||||
has_dump_thread = breakpad_info->GetDumpThreadID(&dump_thread_id);
|
||||
has_requesting_thread =
|
||||
airbag_info->GetRequestingThreadID(&requesting_thread_id);
|
||||
breakpad_info->GetRequestingThreadID(&requesting_thread_id);
|
||||
}
|
||||
|
||||
MinidumpException *exception = dump.GetException();
|
||||
@@ -675,4 +675,4 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, u_int64_t *address) {
|
||||
return reason;
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -32,27 +32,27 @@
|
||||
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
#include "google_airbag/processor/basic_source_line_resolver.h"
|
||||
#include "google_airbag/processor/call_stack.h"
|
||||
#include "google_airbag/processor/code_module.h"
|
||||
#include "google_airbag/processor/code_modules.h"
|
||||
#include "google_airbag/processor/minidump_processor.h"
|
||||
#include "google_airbag/processor/process_state.h"
|
||||
#include "google_airbag/processor/stack_frame.h"
|
||||
#include "google_airbag/processor/symbol_supplier.h"
|
||||
#include "google_breakpad/processor/basic_source_line_resolver.h"
|
||||
#include "google_breakpad/processor/call_stack.h"
|
||||
#include "google_breakpad/processor/code_module.h"
|
||||
#include "google_breakpad/processor/code_modules.h"
|
||||
#include "google_breakpad/processor/minidump_processor.h"
|
||||
#include "google_breakpad/processor/process_state.h"
|
||||
#include "google_breakpad/processor/stack_frame.h"
|
||||
#include "google_breakpad/processor/symbol_supplier.h"
|
||||
#include "processor/scoped_ptr.h"
|
||||
|
||||
namespace {
|
||||
|
||||
using std::string;
|
||||
using google_airbag::BasicSourceLineResolver;
|
||||
using google_airbag::CallStack;
|
||||
using google_airbag::CodeModule;
|
||||
using google_airbag::MinidumpProcessor;
|
||||
using google_airbag::ProcessState;
|
||||
using google_airbag::scoped_ptr;
|
||||
using google_airbag::SymbolSupplier;
|
||||
using google_airbag::SystemInfo;
|
||||
using google_breakpad::BasicSourceLineResolver;
|
||||
using google_breakpad::CallStack;
|
||||
using google_breakpad::CodeModule;
|
||||
using google_breakpad::MinidumpProcessor;
|
||||
using google_breakpad::ProcessState;
|
||||
using google_breakpad::scoped_ptr;
|
||||
using google_breakpad::SymbolSupplier;
|
||||
using google_breakpad::SystemInfo;
|
||||
|
||||
static const char *kSystemInfoOS = "Windows NT";
|
||||
static const char *kSystemInfoOSShort = "windows";
|
||||
@@ -111,7 +111,7 @@ SymbolSupplier::SymbolResult TestSymbolSupplier::GetSymbolFile(
|
||||
return INTERRUPT;
|
||||
}
|
||||
|
||||
if (module && module->code_file() == "C:\\test_app.exe") {
|
||||
if (module && module->code_file() == "c:\\test_app.exe") {
|
||||
*symbol_file = string(getenv("srcdir") ? getenv("srcdir") : ".") +
|
||||
"/src/processor/testdata/symbols/test_app.pdb/" +
|
||||
module->debug_identifier() +
|
||||
@@ -150,27 +150,27 @@ static bool RunTests() {
|
||||
|
||||
ASSERT_TRUE(stack->frames()->at(0)->module);
|
||||
ASSERT_EQ(stack->frames()->at(0)->module->base_address(), 0x400000);
|
||||
ASSERT_EQ(stack->frames()->at(0)->module->code_file(), "C:\\test_app.exe");
|
||||
ASSERT_EQ(stack->frames()->at(0)->module->code_file(), "c:\\test_app.exe");
|
||||
ASSERT_EQ(stack->frames()->at(0)->function_name,
|
||||
"`anonymous namespace'::CrashFunction");
|
||||
ASSERT_EQ(stack->frames()->at(0)->source_file_name, "c:\\test_app.cc");
|
||||
ASSERT_EQ(stack->frames()->at(0)->source_line, 56);
|
||||
ASSERT_EQ(stack->frames()->at(0)->source_line, 58);
|
||||
|
||||
ASSERT_TRUE(stack->frames()->at(1)->module);
|
||||
ASSERT_EQ(stack->frames()->at(1)->module->base_address(), 0x400000);
|
||||
ASSERT_EQ(stack->frames()->at(1)->module->code_file(), "C:\\test_app.exe");
|
||||
ASSERT_EQ(stack->frames()->at(1)->module->code_file(), "c:\\test_app.exe");
|
||||
ASSERT_EQ(stack->frames()->at(1)->function_name, "main");
|
||||
ASSERT_EQ(stack->frames()->at(1)->source_file_name, "c:\\test_app.cc");
|
||||
ASSERT_EQ(stack->frames()->at(1)->source_line, 63);
|
||||
ASSERT_EQ(stack->frames()->at(1)->source_line, 65);
|
||||
|
||||
// This comes from the CRT
|
||||
ASSERT_TRUE(stack->frames()->at(2)->module);
|
||||
ASSERT_EQ(stack->frames()->at(2)->module->base_address(), 0x400000);
|
||||
ASSERT_EQ(stack->frames()->at(2)->module->code_file(), "C:\\test_app.exe");
|
||||
ASSERT_EQ(stack->frames()->at(2)->module->code_file(), "c:\\test_app.exe");
|
||||
ASSERT_EQ(stack->frames()->at(2)->function_name, "__tmainCRTStartup");
|
||||
ASSERT_EQ(stack->frames()->at(2)->source_file_name,
|
||||
"f:\\rtm\\vctools\\crt_bld\\self_x86\\crt\\src\\crt0.c");
|
||||
ASSERT_EQ(stack->frames()->at(2)->source_line, 318);
|
||||
"f:\\sp\\vctools\\crt_bld\\self_x86\\crt\\src\\crt0.c");
|
||||
ASSERT_EQ(stack->frames()->at(2)->source_line, 327);
|
||||
|
||||
// No debug info available for kernel32.dll
|
||||
ASSERT_TRUE(stack->frames()->at(3)->module);
|
||||
@@ -183,7 +183,7 @@ static bool RunTests() {
|
||||
|
||||
ASSERT_EQ(state.modules()->module_count(), 13);
|
||||
ASSERT_TRUE(state.modules()->GetMainModule());
|
||||
ASSERT_EQ(state.modules()->GetMainModule()->code_file(), "C:\\test_app.exe");
|
||||
ASSERT_EQ(state.modules()->GetMainModule()->code_file(), "c:\\test_app.exe");
|
||||
ASSERT_FALSE(state.modules()->GetModuleForAddress(0));
|
||||
ASSERT_EQ(state.modules()->GetMainModule(),
|
||||
state.modules()->GetModuleForAddress(0x400000));
|
||||
|
||||
@@ -37,14 +37,14 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "google_airbag/processor/basic_source_line_resolver.h"
|
||||
#include "google_airbag/processor/call_stack.h"
|
||||
#include "google_airbag/processor/code_module.h"
|
||||
#include "google_airbag/processor/code_modules.h"
|
||||
#include "google_airbag/processor/minidump.h"
|
||||
#include "google_airbag/processor/minidump_processor.h"
|
||||
#include "google_airbag/processor/process_state.h"
|
||||
#include "google_airbag/processor/stack_frame_cpu.h"
|
||||
#include "google_breakpad/processor/basic_source_line_resolver.h"
|
||||
#include "google_breakpad/processor/call_stack.h"
|
||||
#include "google_breakpad/processor/code_module.h"
|
||||
#include "google_breakpad/processor/code_modules.h"
|
||||
#include "google_breakpad/processor/minidump.h"
|
||||
#include "google_breakpad/processor/minidump_processor.h"
|
||||
#include "google_breakpad/processor/process_state.h"
|
||||
#include "google_breakpad/processor/stack_frame_cpu.h"
|
||||
#include "processor/pathname_stripper.h"
|
||||
#include "processor/scoped_ptr.h"
|
||||
#include "processor/simple_symbol_supplier.h"
|
||||
@@ -53,19 +53,19 @@ namespace {
|
||||
|
||||
using std::string;
|
||||
using std::vector;
|
||||
using google_airbag::BasicSourceLineResolver;
|
||||
using google_airbag::CallStack;
|
||||
using google_airbag::CodeModule;
|
||||
using google_airbag::CodeModules;
|
||||
using google_airbag::MinidumpModule;
|
||||
using google_airbag::MinidumpProcessor;
|
||||
using google_airbag::PathnameStripper;
|
||||
using google_airbag::ProcessState;
|
||||
using google_airbag::scoped_ptr;
|
||||
using google_airbag::SimpleSymbolSupplier;
|
||||
using google_airbag::StackFrame;
|
||||
using google_airbag::StackFramePPC;
|
||||
using google_airbag::StackFrameX86;
|
||||
using google_breakpad::BasicSourceLineResolver;
|
||||
using google_breakpad::CallStack;
|
||||
using google_breakpad::CodeModule;
|
||||
using google_breakpad::CodeModules;
|
||||
using google_breakpad::MinidumpModule;
|
||||
using google_breakpad::MinidumpProcessor;
|
||||
using google_breakpad::PathnameStripper;
|
||||
using google_breakpad::ProcessState;
|
||||
using google_breakpad::scoped_ptr;
|
||||
using google_breakpad::SimpleSymbolSupplier;
|
||||
using google_breakpad::StackFrame;
|
||||
using google_breakpad::StackFramePPC;
|
||||
using google_breakpad::StackFrameX86;
|
||||
|
||||
// Separator character for machine readable output.
|
||||
static const char kOutputSeparator = '|';
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
|
||||
#include "processor/pathname_stripper.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
// static
|
||||
string PathnameStripper::File(const string &path) {
|
||||
@@ -53,4 +53,4 @@ string PathnameStripper::File(const string &path) {
|
||||
return path.substr(file_start);
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::string;
|
||||
|
||||
@@ -48,6 +48,6 @@ class PathnameStripper {
|
||||
static string File(const string &path);
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // PROCESSOR_PATHNAME_STRIPPER_H__
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
|
||||
namespace {
|
||||
|
||||
using google_airbag::PathnameStripper;
|
||||
using google_breakpad::PathnameStripper;
|
||||
|
||||
static bool RunTests() {
|
||||
ASSERT_EQ(PathnameStripper::File("/dir/file"), "file");
|
||||
|
||||
@@ -26,9 +26,9 @@
|
||||
#include <sstream>
|
||||
|
||||
#include "processor/postfix_evaluator.h"
|
||||
#include "google_airbag/processor/memory_region.h"
|
||||
#include "google_breakpad/processor/memory_region.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::istringstream;
|
||||
using std::ostringstream;
|
||||
@@ -235,7 +235,7 @@ void PostfixEvaluator<ValueType>::PushValue(const ValueType &value) {
|
||||
}
|
||||
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
|
||||
#endif // PROCESSOR_POSTFIX_EVALUATOR_INL_H__
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::map;
|
||||
using std::string;
|
||||
@@ -137,7 +137,7 @@ class PostfixEvaluator {
|
||||
vector<string> stack_;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
|
||||
#endif // PROCESSOR_POSTFIX_EVALUATOR_H__
|
||||
|
||||
@@ -37,8 +37,8 @@
|
||||
|
||||
#include "processor/postfix_evaluator-inl.h"
|
||||
|
||||
#include "google_airbag/common/airbag_types.h"
|
||||
#include "google_airbag/processor/memory_region.h"
|
||||
#include "google_breakpad/common/breakpad_types.h"
|
||||
#include "google_breakpad/processor/memory_region.h"
|
||||
|
||||
|
||||
namespace {
|
||||
@@ -46,8 +46,8 @@ namespace {
|
||||
|
||||
using std::map;
|
||||
using std::string;
|
||||
using google_airbag::MemoryRegion;
|
||||
using google_airbag::PostfixEvaluator;
|
||||
using google_breakpad::MemoryRegion;
|
||||
using google_breakpad::PostfixEvaluator;
|
||||
|
||||
|
||||
// FakeMemoryRegion is used to test PostfixEvaluator's dereference (^)
|
||||
|
||||
@@ -33,11 +33,11 @@
|
||||
//
|
||||
// Author: Mark Mentovai
|
||||
|
||||
#include "google_airbag/processor/process_state.h"
|
||||
#include "google_airbag/processor/call_stack.h"
|
||||
#include "google_airbag/processor/code_modules.h"
|
||||
#include "google_breakpad/processor/process_state.h"
|
||||
#include "google_breakpad/processor/call_stack.h"
|
||||
#include "google_breakpad/processor/code_modules.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
ProcessState::~ProcessState() {
|
||||
Clear();
|
||||
@@ -60,4 +60,4 @@ void ProcessState::Clear() {
|
||||
modules_ = NULL;
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
#include "processor/range_map.h"
|
||||
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
|
||||
template<typename AddressType, typename EntryType>
|
||||
@@ -176,7 +176,7 @@ void RangeMap<AddressType, EntryType>::Clear() {
|
||||
}
|
||||
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
|
||||
#endif // PROCESSOR_RANGE_MAP_INL_H__
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
#include <map>
|
||||
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
|
||||
template<typename AddressType, typename EntryType>
|
||||
@@ -121,7 +121,7 @@ class RangeMap {
|
||||
};
|
||||
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
|
||||
#endif // PROCESSOR_RANGE_MAP_H__
|
||||
|
||||
@@ -44,9 +44,9 @@
|
||||
namespace {
|
||||
|
||||
|
||||
using google_airbag::linked_ptr;
|
||||
using google_airbag::scoped_ptr;
|
||||
using google_airbag::RangeMap;
|
||||
using google_breakpad::linked_ptr;
|
||||
using google_breakpad::scoped_ptr;
|
||||
using google_breakpad::RangeMap;
|
||||
|
||||
|
||||
// A CountedObject holds an int. A global (not thread safe!) count of
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
#include <assert.h> // for assert
|
||||
#include <stdlib.h> // for free() decl
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
template <typename T>
|
||||
class scoped_ptr {
|
||||
@@ -330,6 +330,6 @@ bool operator!=(T* p, const scoped_ptr_malloc<T,FP>& b) {
|
||||
return p != b.get();
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // PROCESSOR_SCOPED_PTR_H__
|
||||
|
||||
@@ -39,11 +39,11 @@
|
||||
#include <cassert>
|
||||
|
||||
#include "processor/simple_symbol_supplier.h"
|
||||
#include "google_airbag/processor/code_module.h"
|
||||
#include "google_airbag/processor/system_info.h"
|
||||
#include "google_breakpad/processor/code_module.h"
|
||||
#include "google_breakpad/processor/system_info.h"
|
||||
#include "processor/pathname_stripper.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
static bool file_exists(const string &file_name) {
|
||||
struct stat sb;
|
||||
@@ -110,4 +110,4 @@ SymbolSupplier::SymbolResult SimpleSymbolSupplier::GetSymbolFileAtPath(
|
||||
return FOUND;
|
||||
}
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -79,9 +79,9 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "google_airbag/processor/symbol_supplier.h"
|
||||
#include "google_breakpad/processor/symbol_supplier.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::string;
|
||||
using std::vector;
|
||||
@@ -116,6 +116,6 @@ class SimpleSymbolSupplier : public SymbolSupplier {
|
||||
vector<string> paths_;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // PROCESSOR_SIMPLE_SYMBOL_SUPPLIER_H__
|
||||
|
||||
@@ -40,9 +40,9 @@
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "google_airbag/common/airbag_types.h"
|
||||
#include "google_breakpad/common/breakpad_types.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
struct StackFrameInfo {
|
||||
public:
|
||||
@@ -120,7 +120,7 @@ struct StackFrameInfo {
|
||||
std::string program_string;
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
|
||||
#endif // PROCESSOR_STACK_FRAME_INFO_H__
|
||||
|
||||
@@ -36,21 +36,21 @@
|
||||
|
||||
#include <cassert>
|
||||
|
||||
#include "google_airbag/processor/stackwalker.h"
|
||||
#include "google_airbag/processor/call_stack.h"
|
||||
#include "google_airbag/processor/code_module.h"
|
||||
#include "google_airbag/processor/code_modules.h"
|
||||
#include "google_airbag/processor/minidump.h"
|
||||
#include "google_airbag/processor/source_line_resolver_interface.h"
|
||||
#include "google_airbag/processor/stack_frame.h"
|
||||
#include "google_airbag/processor/symbol_supplier.h"
|
||||
#include "google_breakpad/processor/stackwalker.h"
|
||||
#include "google_breakpad/processor/call_stack.h"
|
||||
#include "google_breakpad/processor/code_module.h"
|
||||
#include "google_breakpad/processor/code_modules.h"
|
||||
#include "google_breakpad/processor/minidump.h"
|
||||
#include "google_breakpad/processor/source_line_resolver_interface.h"
|
||||
#include "google_breakpad/processor/stack_frame.h"
|
||||
#include "google_breakpad/processor/symbol_supplier.h"
|
||||
#include "processor/linked_ptr.h"
|
||||
#include "processor/scoped_ptr.h"
|
||||
#include "processor/stack_frame_info.h"
|
||||
#include "processor/stackwalker_ppc.h"
|
||||
#include "processor/stackwalker_x86.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
|
||||
Stackwalker::Stackwalker(const SystemInfo *system_info,
|
||||
@@ -162,4 +162,4 @@ Stackwalker* Stackwalker::StackwalkerForCPU(
|
||||
}
|
||||
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -35,11 +35,11 @@
|
||||
|
||||
|
||||
#include "processor/stackwalker_ppc.h"
|
||||
#include "google_airbag/processor/call_stack.h"
|
||||
#include "google_airbag/processor/memory_region.h"
|
||||
#include "google_airbag/processor/stack_frame_cpu.h"
|
||||
#include "google_breakpad/processor/call_stack.h"
|
||||
#include "google_breakpad/processor/memory_region.h"
|
||||
#include "google_breakpad/processor/stack_frame_cpu.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
|
||||
StackwalkerPPC::StackwalkerPPC(const SystemInfo *system_info,
|
||||
@@ -135,4 +135,4 @@ StackFrame* StackwalkerPPC::GetCallerFrame(
|
||||
}
|
||||
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -39,11 +39,11 @@
|
||||
#define PROCESSOR_STACKWALKER_PPC_H__
|
||||
|
||||
|
||||
#include "google_airbag/common/airbag_types.h"
|
||||
#include "google_airbag/common/minidump_format.h"
|
||||
#include "google_airbag/processor/stackwalker.h"
|
||||
#include "google_breakpad/common/breakpad_types.h"
|
||||
#include "google_breakpad/common/minidump_format.h"
|
||||
#include "google_breakpad/processor/stackwalker.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
class CodeModules;
|
||||
|
||||
@@ -75,7 +75,7 @@ class StackwalkerPPC : public Stackwalker {
|
||||
};
|
||||
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
|
||||
#endif // PROCESSOR_STACKWALKER_PPC_H__
|
||||
|
||||
@@ -54,29 +54,29 @@
|
||||
|
||||
#include <cstdio>
|
||||
|
||||
#include "google_airbag/common/airbag_types.h"
|
||||
#include "google_airbag/common/minidump_format.h"
|
||||
#include "google_airbag/processor/basic_source_line_resolver.h"
|
||||
#include "google_airbag/processor/call_stack.h"
|
||||
#include "google_airbag/processor/memory_region.h"
|
||||
#include "google_airbag/processor/stack_frame.h"
|
||||
#include "google_airbag/processor/stack_frame_cpu.h"
|
||||
#include "google_breakpad/common/breakpad_types.h"
|
||||
#include "google_breakpad/common/minidump_format.h"
|
||||
#include "google_breakpad/processor/basic_source_line_resolver.h"
|
||||
#include "google_breakpad/processor/call_stack.h"
|
||||
#include "google_breakpad/processor/memory_region.h"
|
||||
#include "google_breakpad/processor/stack_frame.h"
|
||||
#include "google_breakpad/processor/stack_frame_cpu.h"
|
||||
#include "processor/scoped_ptr.h"
|
||||
|
||||
using google_airbag::BasicSourceLineResolver;
|
||||
using google_airbag::CallStack;
|
||||
using google_airbag::MemoryRegion;
|
||||
using google_airbag::scoped_ptr;
|
||||
using google_airbag::StackFrame;
|
||||
using google_airbag::StackFramePPC;
|
||||
using google_airbag::StackFrameX86;
|
||||
using google_breakpad::BasicSourceLineResolver;
|
||||
using google_breakpad::CallStack;
|
||||
using google_breakpad::MemoryRegion;
|
||||
using google_breakpad::scoped_ptr;
|
||||
using google_breakpad::StackFrame;
|
||||
using google_breakpad::StackFramePPC;
|
||||
using google_breakpad::StackFrameX86;
|
||||
|
||||
#if defined(__i386__)
|
||||
#include "processor/stackwalker_x86.h"
|
||||
using google_airbag::StackwalkerX86;
|
||||
using google_breakpad::StackwalkerX86;
|
||||
#elif defined(__ppc__)
|
||||
#include "processor/stackwalker_ppc.h"
|
||||
using google_airbag::StackwalkerPPC;
|
||||
using google_breakpad::StackwalkerPPC;
|
||||
#endif // __i386__ || __ppc__
|
||||
|
||||
#define RECURSION_DEPTH 100
|
||||
|
||||
@@ -37,13 +37,13 @@
|
||||
#include "processor/postfix_evaluator-inl.h"
|
||||
|
||||
#include "processor/stackwalker_x86.h"
|
||||
#include "google_airbag/processor/call_stack.h"
|
||||
#include "google_airbag/processor/memory_region.h"
|
||||
#include "google_airbag/processor/stack_frame_cpu.h"
|
||||
#include "google_breakpad/processor/call_stack.h"
|
||||
#include "google_breakpad/processor/memory_region.h"
|
||||
#include "google_breakpad/processor/stack_frame_cpu.h"
|
||||
#include "processor/linked_ptr.h"
|
||||
#include "processor/stack_frame_info.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
|
||||
StackwalkerX86::StackwalkerX86(const SystemInfo *system_info,
|
||||
@@ -134,7 +134,7 @@ StackFrame* StackwalkerX86::GetCallerFrame(
|
||||
|
||||
// Set up the dictionary for the PostfixEvaluator. %ebp and %esp are used
|
||||
// in each program string, and their previous values are known, so set them
|
||||
// here. .cbCalleeParams is an Airbag extension that allows us to use
|
||||
// here. .cbCalleeParams is an Breakpad extension that allows us to use
|
||||
// the PostfixEvaluator engine when certain types of debugging information
|
||||
// are present without having to write the constants into the program string
|
||||
// as literals.
|
||||
@@ -312,4 +312,4 @@ StackFrame* StackwalkerX86::GetCallerFrame(
|
||||
}
|
||||
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
@@ -39,11 +39,11 @@
|
||||
#define PROCESSOR_STACKWALKER_X86_H__
|
||||
|
||||
|
||||
#include "google_airbag/common/airbag_types.h"
|
||||
#include "google_airbag/common/minidump_format.h"
|
||||
#include "google_airbag/processor/stackwalker.h"
|
||||
#include "google_breakpad/common/breakpad_types.h"
|
||||
#include "google_breakpad/common/minidump_format.h"
|
||||
#include "google_breakpad/processor/stackwalker.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
class CodeModules;
|
||||
|
||||
@@ -76,7 +76,7 @@ class StackwalkerX86 : public Stackwalker {
|
||||
};
|
||||
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
|
||||
#endif // PROCESSOR_STACKWALKER_X86_H__
|
||||
|
||||
BIN
src/processor/testdata/minidump2.dmp
vendored
BIN
src/processor/testdata/minidump2.dmp
vendored
Binary file not shown.
108
src/processor/testdata/minidump2.dump.out
vendored
108
src/processor/testdata/minidump2.dump.out
vendored
File diff suppressed because one or more lines are too long
@@ -1,7 +1,7 @@
|
||||
OS|Windows NT|5.1.2600 Service Pack 2
|
||||
CPU|x86|GenuineIntel family 6 model 13 stepping 8
|
||||
Crash|EXCEPTION_ACCESS_VIOLATION|0x45|0
|
||||
Module|test_app.exe||0x00400000|0x0042bfff|1
|
||||
Module|test_app.exe||0x00400000|0x0042cfff|1
|
||||
Module|dbghelp.dll|5.1.2600.2180|0x59a60000|0x59b00fff|0
|
||||
Module|imm32.dll|5.1.2600.2180|0x76390000|0x763acfff|0
|
||||
Module|psapi.dll|5.1.2600.2180|0x76bf0000|0x76bfafff|0
|
||||
@@ -15,7 +15,7 @@ Module|gdi32.dll|5.1.2600.2818|0x77f10000|0x77f56fff|0
|
||||
Module|kernel32.dll|5.1.2600.2945|0x7c800000|0x7c8f3fff|0
|
||||
Module|ntdll.dll|5.1.2600.2180|0x7c900000|0x7c9affff|0
|
||||
|
||||
0|0|test_app.exe|`anonymous namespace'::CrashFunction|c:\test_app.cc|56|0x3
|
||||
0|1|test_app.exe|main|c:\test_app.cc|63|0x4
|
||||
0|2|test_app.exe|__tmainCRTStartup|f:\rtm\vctools\crt_bld\self_x86\crt\src\crt0.c|318|0x11
|
||||
0|0|test_app.exe|`anonymous namespace'::CrashFunction|c:\test_app.cc|58|0x3
|
||||
0|1|test_app.exe|main|c:\test_app.cc|65|0x4
|
||||
0|2|test_app.exe|__tmainCRTStartup|f:\sp\vctools\crt_bld\self_x86\crt\src\crt0.c|327|0x11
|
||||
0|3|kernel32.dll|BaseProcessStart|||0x22
|
||||
|
||||
18
src/processor/testdata/minidump2.stackwalk.out
vendored
18
src/processor/testdata/minidump2.stackwalk.out
vendored
@@ -7,19 +7,19 @@ Crash reason: EXCEPTION_ACCESS_VIOLATION
|
||||
Crash address: 0x45
|
||||
|
||||
Thread 0 (crashed)
|
||||
0 test_app.exe!`anonymous namespace'::CrashFunction [test_app.cc : 56 + 0x3]
|
||||
eip = 0x00403f6e esp = 0x0012fe8c ebp = 0x0012fe90 ebx = 0x7c80abc1
|
||||
esi = 0x00000002 edi = 0x00000a28 eax = 0x00000045 ecx = 0x0012fe9c
|
||||
edx = 0x0042ac60 efl = 0x00010246
|
||||
1 test_app.exe!main [test_app.cc : 63 + 0x4]
|
||||
eip = 0x00403ed0 esp = 0x0012fe98 ebp = 0x0012ff70
|
||||
2 test_app.exe!__tmainCRTStartup [crt0.c : 318 + 0x11]
|
||||
eip = 0x00405096 esp = 0x0012ff78 ebp = 0x0012ffc0
|
||||
0 test_app.exe!`anonymous namespace'::CrashFunction [test_app.cc : 58 + 0x3]
|
||||
eip = 0x0040429e esp = 0x0012fe84 ebp = 0x0012fe88 ebx = 0x7c80abc1
|
||||
esi = 0x00000002 edi = 0x00000a28 eax = 0x00000045 ecx = 0x0012fe94
|
||||
edx = 0x0042bc58 efl = 0x00010246
|
||||
1 test_app.exe!main [test_app.cc : 65 + 0x4]
|
||||
eip = 0x00404200 esp = 0x0012fe90 ebp = 0x0012ff70
|
||||
2 test_app.exe!__tmainCRTStartup [crt0.c : 327 + 0x11]
|
||||
eip = 0x004053ec esp = 0x0012ff78 ebp = 0x0012ffc0
|
||||
3 kernel32.dll!BaseProcessStart + 0x22
|
||||
eip = 0x7c816fd7 esp = 0x0012ffc8 ebp = 0x0012fff0
|
||||
|
||||
Loaded modules:
|
||||
0x00400000 - 0x0042bfff test_app.exe ??? (main)
|
||||
0x00400000 - 0x0042cfff test_app.exe ??? (main)
|
||||
0x59a60000 - 0x59b00fff dbghelp.dll 5.1.2600.2180
|
||||
0x76390000 - 0x763acfff imm32.dll 5.1.2600.2180
|
||||
0x76bf0000 - 0x76bfafff psapi.dll 5.1.2600.2180
|
||||
|
||||
22151
src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym
vendored
Normal file
22151
src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym
vendored
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
6
src/processor/testdata/test_app.cc
vendored
6
src/processor/testdata/test_app.cc
vendored
@@ -28,8 +28,8 @@
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// This file is used to generate minidump2.dmp and minidump2.sym.
|
||||
// cl /Zi test_app.cc /Fetest_app.exe /I airbag/src \
|
||||
// airbag/src/client/windows/releasestaticcrt/exception_handler.lib \
|
||||
// cl /Zi test_app.cc /Fetest_app.exe /I google_breakpad/src \
|
||||
// google_breakpad/src/client/windows/releasestaticcrt/exception_handler.lib \
|
||||
// ole32.lib
|
||||
// Then run test_app to generate a dump, and dump_syms to create the .sym file.
|
||||
|
||||
@@ -61,7 +61,7 @@ static void CrashFunction() {
|
||||
} // namespace
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
google_airbag::ExceptionHandler eh(L".", NULL, callback, NULL, true);
|
||||
google_breakpad::ExceptionHandler eh(L".", NULL, callback, NULL, true);
|
||||
CrashFunction();
|
||||
printf("did not crash?\n");
|
||||
return 0;
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
//
|
||||
// Copyright (c) 2006, Google Inc.
|
||||
// All rights reserved.
|
||||
//
|
||||
@@ -40,14 +39,14 @@
|
||||
|
||||
#include <Foundation/Foundation.h>
|
||||
|
||||
#include "google_airbag/processor/basic_source_line_resolver.h"
|
||||
#include "google_airbag/processor/call_stack.h"
|
||||
#include "google_airbag/processor/code_module.h"
|
||||
#include "google_airbag/processor/minidump.h"
|
||||
#include "google_airbag/processor/minidump_processor.h"
|
||||
#include "google_airbag/processor/process_state.h"
|
||||
#include "google_airbag/processor/stack_frame_cpu.h"
|
||||
#include "google_airbag/processor/system_info.h"
|
||||
#include "google_breakpad/processor/basic_source_line_resolver.h"
|
||||
#include "google_breakpad/processor/call_stack.h"
|
||||
#include "google_breakpad/processor/code_module.h"
|
||||
#include "google_breakpad/processor/minidump.h"
|
||||
#include "google_breakpad/processor/minidump_processor.h"
|
||||
#include "google_breakpad/processor/process_state.h"
|
||||
#include "google_breakpad/processor/stack_frame_cpu.h"
|
||||
#include "google_breakpad/processor/system_info.h"
|
||||
#include "processor/pathname_stripper.h"
|
||||
#include "processor/scoped_ptr.h"
|
||||
#include "processor/simple_symbol_supplier.h"
|
||||
@@ -56,19 +55,19 @@
|
||||
|
||||
using std::string;
|
||||
|
||||
using google_airbag::BasicSourceLineResolver;
|
||||
using google_airbag::CallStack;
|
||||
using google_airbag::CodeModule;
|
||||
using google_airbag::CodeModules;
|
||||
using google_airbag::MinidumpProcessor;
|
||||
using google_airbag::OnDemandSymbolSupplier;
|
||||
using google_airbag::PathnameStripper;
|
||||
using google_airbag::ProcessState;
|
||||
using google_airbag::scoped_ptr;
|
||||
using google_airbag::StackFrame;
|
||||
using google_airbag::StackFramePPC;
|
||||
using google_airbag::StackFrameX86;
|
||||
using google_airbag::SystemInfo;
|
||||
using google_breakpad::BasicSourceLineResolver;
|
||||
using google_breakpad::CallStack;
|
||||
using google_breakpad::CodeModule;
|
||||
using google_breakpad::CodeModules;
|
||||
using google_breakpad::MinidumpProcessor;
|
||||
using google_breakpad::OnDemandSymbolSupplier;
|
||||
using google_breakpad::PathnameStripper;
|
||||
using google_breakpad::ProcessState;
|
||||
using google_breakpad::scoped_ptr;
|
||||
using google_breakpad::StackFrame;
|
||||
using google_breakpad::StackFramePPC;
|
||||
using google_breakpad::StackFrameX86;
|
||||
using google_breakpad::SystemInfo;
|
||||
|
||||
typedef struct {
|
||||
NSString *minidumpPath;
|
||||
@@ -254,7 +253,7 @@ static void Start(Options *options) {
|
||||
|
||||
//=============================================================================
|
||||
static void Usage(int argc, const char *argv[]) {
|
||||
fprintf(stderr, "Convert a minidump to a crash report. Airbag symbol files\n");
|
||||
fprintf(stderr, "Convert a minidump to a crash report. Breakpad symbol files\n");
|
||||
fprintf(stderr, "will be used (or created if missing) in /tmp.\n");
|
||||
fprintf(stderr, "Usage: %s [-s search-dir] minidump-file\n", argv[0]);
|
||||
fprintf(stderr, "\t-s: Specify a search directory to use for missing modules\n");
|
||||
|
||||
@@ -74,8 +74,8 @@
|
||||
08FB7796FE84155DC02AAC07 /* crash_report.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = crash_report.mm; sourceTree = "<group>"; };
|
||||
08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
|
||||
8DD76FA10486AA7600D96B5E /* crash_report */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = crash_report; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
9B35FEE20B2675F9008DE8C7 /* code_module.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = code_module.h; path = ../../../google_airbag/processor/code_module.h; sourceTree = SOURCE_ROOT; };
|
||||
9B35FEE30B2675F9008DE8C7 /* code_modules.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = code_modules.h; path = ../../../google_airbag/processor/code_modules.h; sourceTree = SOURCE_ROOT; };
|
||||
9B35FEE20B2675F9008DE8C7 /* code_module.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = code_module.h; path = ../../../google_breakpad/processor/code_module.h; sourceTree = SOURCE_ROOT; };
|
||||
9B35FEE30B2675F9008DE8C7 /* code_modules.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = code_modules.h; path = ../../../google_breakpad/processor/code_modules.h; sourceTree = SOURCE_ROOT; };
|
||||
9B35FEE60B26761C008DE8C7 /* basic_code_module.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = basic_code_module.h; path = ../../../processor/basic_code_module.h; sourceTree = SOURCE_ROOT; };
|
||||
9B35FEE70B26761C008DE8C7 /* basic_code_modules.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = basic_code_modules.cc; path = ../../../processor/basic_code_modules.cc; sourceTree = SOURCE_ROOT; };
|
||||
9B35FEE80B26761C008DE8C7 /* basic_code_modules.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = basic_code_modules.h; path = ../../../processor/basic_code_modules.h; sourceTree = SOURCE_ROOT; };
|
||||
@@ -83,7 +83,7 @@
|
||||
9B3904950B2E52D90059FABE /* source_line_resolver_interface.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = source_line_resolver_interface.h; sourceTree = "<group>"; };
|
||||
9B3904980B2E52FD0059FABE /* basic_source_line_resolver.cc */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = basic_source_line_resolver.cc; path = ../../../processor/basic_source_line_resolver.cc; sourceTree = SOURCE_ROOT; };
|
||||
9B44619D0B66C66B00BBB817 /* system_info.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = system_info.h; sourceTree = "<group>"; };
|
||||
9BDF16F90B1B8ACD00F8391B /* airbag_types.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = airbag_types.h; sourceTree = "<group>"; };
|
||||
9BDF16F90B1B8ACD00F8391B /* breakpad_types.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = breakpad_types.h; sourceTree = "<group>"; };
|
||||
9BDF16FA0B1B8ACD00F8391B /* minidump_format.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = minidump_format.h; sourceTree = "<group>"; };
|
||||
9BDF16FC0B1B8ACD00F8391B /* call_stack.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = call_stack.h; sourceTree = "<group>"; };
|
||||
9BDF16FD0B1B8ACD00F8391B /* memory_region.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = memory_region.h; sourceTree = "<group>"; };
|
||||
@@ -138,21 +138,21 @@
|
||||
08FB7796FE84155DC02AAC07 /* crash_report.mm */,
|
||||
9BDF176B0B1B8CB100F8391B /* on_demand_symbol_supplier.h */,
|
||||
9BDF176C0B1B8CB100F8391B /* on_demand_symbol_supplier.mm */,
|
||||
08FB7795FE84155DC02AAC07 /* airbag */,
|
||||
08FB7795FE84155DC02AAC07 /* breakpad */,
|
||||
08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */,
|
||||
1AB674ADFE9D54B511CA2CBB /* Products */,
|
||||
);
|
||||
name = crash_report;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
08FB7795FE84155DC02AAC07 /* airbag */ = {
|
||||
08FB7795FE84155DC02AAC07 /* breakpad */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9BE650AB0B52FE1A00611104 /* common */,
|
||||
9BDF17280B1B8B0200F8391B /* processor */,
|
||||
9BDF16F70B1B8ACD00F8391B /* google_airbag */,
|
||||
9BDF16F70B1B8ACD00F8391B /* google_breakpad */,
|
||||
);
|
||||
name = airbag;
|
||||
name = breakpad;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = {
|
||||
@@ -171,20 +171,20 @@
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
9BDF16F70B1B8ACD00F8391B /* google_airbag */ = {
|
||||
9BDF16F70B1B8ACD00F8391B /* google_breakpad */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9BDF16F80B1B8ACD00F8391B /* common */,
|
||||
9BDF16FB0B1B8ACD00F8391B /* processor */,
|
||||
);
|
||||
name = google_airbag;
|
||||
path = ../../../google_airbag;
|
||||
name = google_breakpad;
|
||||
path = ../../../google_breakpad;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
9BDF16F80B1B8ACD00F8391B /* common */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
9BDF16F90B1B8ACD00F8391B /* airbag_types.h */,
|
||||
9BDF16F90B1B8ACD00F8391B /* breakpad_types.h */,
|
||||
9BDF16FA0B1B8ACD00F8391B /* minidump_format.h */,
|
||||
);
|
||||
path = common;
|
||||
|
||||
@@ -28,16 +28,16 @@
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
// on_demand_symbol_supplier.h: Provides a Symbol Supplier that will create
|
||||
// an airbag symbol file on demand.
|
||||
// an breakpad symbol file on demand.
|
||||
|
||||
#ifndef TOOLS_MAC_CRASH_REPORT_ON_DEMAND_SYMBOL_SUPPLIER_H__
|
||||
#define TOOLS_MAC_CRASH_REPORT_ON_DEMAND_SYMBOL_SUPPLIER_H__
|
||||
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include "google_airbag/processor/symbol_supplier.h"
|
||||
#include "google_breakpad/processor/symbol_supplier.h"
|
||||
|
||||
namespace google_airbag {
|
||||
namespace google_breakpad {
|
||||
|
||||
using std::map;
|
||||
using std::string;
|
||||
@@ -79,12 +79,12 @@ class OnDemandSymbolSupplier : public SymbolSupplier {
|
||||
// returned, then |module| doesn't have a symbol file.
|
||||
string GetModuleSymbolFile(const CodeModule *module);
|
||||
|
||||
// Generate the airbag symbol file for |module|. Return true if successful.
|
||||
// Generate the breakpad symbol file for |module|. Return true if successful.
|
||||
// File is generated in /tmp.
|
||||
bool GenerateSymbolFile(const CodeModule *module,
|
||||
const SystemInfo *system_info);
|
||||
};
|
||||
|
||||
} // namespace google_airbag
|
||||
} // namespace google_breakpad
|
||||
|
||||
#endif // TOOLS_MAC_CRASH_REPORT_ON_DEMAND_SYMBOL_SUPPLIER_H__
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user