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:
parent
83befb1cb4
commit
e5dc60822e
118 changed files with 37042 additions and 24117 deletions
80
Makefile.am
80
Makefile.am
|
@ -47,24 +47,24 @@ dist_doc_DATA = \
|
||||||
|
|
||||||
|
|
||||||
## Libraries
|
## Libraries
|
||||||
lib_LTLIBRARIES = src/libairbag.la
|
lib_LTLIBRARIES = src/libbreakpad.la
|
||||||
|
|
||||||
src_libairbag_la_SOURCES = \
|
src_libbreakpad_la_SOURCES = \
|
||||||
src/google_airbag/common/airbag_types.h \
|
src/google_breakpad/common/breakpad_types.h \
|
||||||
src/google_airbag/common/minidump_format.h \
|
src/google_breakpad/common/minidump_format.h \
|
||||||
src/google_airbag/processor/basic_source_line_resolver.h \
|
src/google_breakpad/processor/basic_source_line_resolver.h \
|
||||||
src/google_airbag/processor/call_stack.h \
|
src/google_breakpad/processor/call_stack.h \
|
||||||
src/google_airbag/processor/code_module.h \
|
src/google_breakpad/processor/code_module.h \
|
||||||
src/google_airbag/processor/code_modules.h \
|
src/google_breakpad/processor/code_modules.h \
|
||||||
src/google_airbag/processor/memory_region.h \
|
src/google_breakpad/processor/memory_region.h \
|
||||||
src/google_airbag/processor/minidump.h \
|
src/google_breakpad/processor/minidump.h \
|
||||||
src/google_airbag/processor/minidump_processor.h \
|
src/google_breakpad/processor/minidump_processor.h \
|
||||||
src/google_airbag/processor/process_state.h \
|
src/google_breakpad/processor/process_state.h \
|
||||||
src/google_airbag/processor/stack_frame.h \
|
src/google_breakpad/processor/stack_frame.h \
|
||||||
src/google_airbag/processor/stack_frame_cpu.h \
|
src/google_breakpad/processor/stack_frame_cpu.h \
|
||||||
src/google_airbag/processor/stackwalker.h \
|
src/google_breakpad/processor/stackwalker.h \
|
||||||
src/google_airbag/processor/symbol_supplier.h \
|
src/google_breakpad/processor/symbol_supplier.h \
|
||||||
src/google_airbag/processor/system_info.h \
|
src/google_breakpad/processor/system_info.h \
|
||||||
src/processor/address_map.h \
|
src/processor/address_map.h \
|
||||||
src/processor/address_map-inl.h \
|
src/processor/address_map-inl.h \
|
||||||
src/processor/basic_code_module.h \
|
src/processor/basic_code_module.h \
|
||||||
|
@ -199,19 +199,43 @@ src_processor_minidump_stackwalk_LDADD = \
|
||||||
## Additional files to be included in a source distribution
|
## Additional files to be included in a source distribution
|
||||||
##
|
##
|
||||||
## find src/client src/common src/processor/testdata src/tools \
|
## find src/client src/common src/processor/testdata src/tools \
|
||||||
## -type f \! -wholename '*/.svn*' -print | sort
|
## -type f \! -path '*/.svn/*' -print | sort
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
$(SCRIPTS) \
|
$(SCRIPTS) \
|
||||||
|
src/client/mac/handler/exception_handler.cc \
|
||||||
|
src/client/mac/handler/exception_handler.h \
|
||||||
|
src/client/mac/handler/exception_handler_test.cc \
|
||||||
|
src/client/mac/handler/minidump_generator.cc \
|
||||||
|
src/client/mac/handler/minidump_generator.h \
|
||||||
|
src/client/mac/handler/minidump_generator_test.cc \
|
||||||
|
src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj \
|
||||||
src/client/minidump_file_writer.cc \
|
src/client/minidump_file_writer.cc \
|
||||||
src/client/minidump_file_writer.h \
|
src/client/minidump_file_writer.h \
|
||||||
src/client/minidump_file_writer-inl.h \
|
src/client/minidump_file_writer-inl.h \
|
||||||
src/client/windows/airbag_client.sln \
|
src/client/minidump_file_writer_unittest.cc \
|
||||||
|
src/client/windows/breakpad_client.sln \
|
||||||
src/client/windows/handler/exception_handler.cc \
|
src/client/windows/handler/exception_handler.cc \
|
||||||
src/client/windows/handler/exception_handler.h \
|
src/client/windows/handler/exception_handler.h \
|
||||||
src/client/windows/handler/exception_handler.vcproj \
|
src/client/windows/handler/exception_handler.vcproj \
|
||||||
src/client/windows/sender/crash_report_sender.cc \
|
src/client/windows/sender/crash_report_sender.cc \
|
||||||
src/client/windows/sender/crash_report_sender.h \
|
src/client/windows/sender/crash_report_sender.h \
|
||||||
src/client/windows/sender/crash_report_sender.vcproj \
|
src/client/windows/sender/crash_report_sender.vcproj \
|
||||||
|
src/common/convert_UTF.c \
|
||||||
|
src/common/convert_UTF.h \
|
||||||
|
src/common/mac/HTTPMultipartUpload.h \
|
||||||
|
src/common/mac/HTTPMultipartUpload.m \
|
||||||
|
src/common/mac/dump_syms.h \
|
||||||
|
src/common/mac/dump_syms.mm \
|
||||||
|
src/common/mac/file_id.cc \
|
||||||
|
src/common/mac/file_id.h \
|
||||||
|
src/common/mac/macho_id.cc \
|
||||||
|
src/common/mac/macho_id.h \
|
||||||
|
src/common/mac/macho_walker.cc \
|
||||||
|
src/common/mac/macho_walker.h \
|
||||||
|
src/common/mac/string_utilities.cc \
|
||||||
|
src/common/mac/string_utilities.h \
|
||||||
|
src/common/string_conversion.cc \
|
||||||
|
src/common/string_conversion.h \
|
||||||
src/common/windows/guid_string.cc \
|
src/common/windows/guid_string.cc \
|
||||||
src/common/windows/guid_string.h \
|
src/common/windows/guid_string.h \
|
||||||
src/common/windows/http_upload.cc \
|
src/common/windows/http_upload.cc \
|
||||||
|
@ -219,6 +243,7 @@ EXTRA_DIST = \
|
||||||
src/common/windows/pdb_source_line_writer.cc \
|
src/common/windows/pdb_source_line_writer.cc \
|
||||||
src/common/windows/pdb_source_line_writer.h \
|
src/common/windows/pdb_source_line_writer.h \
|
||||||
src/common/windows/string_utils-inl.h \
|
src/common/windows/string_utils-inl.h \
|
||||||
|
src/common/windows/string_utils.cc \
|
||||||
src/processor/testdata/minidump2.dmp \
|
src/processor/testdata/minidump2.dmp \
|
||||||
src/processor/testdata/minidump2.dump.out \
|
src/processor/testdata/minidump2.dump.out \
|
||||||
src/processor/testdata/minidump2.stackwalk.machine_readable.out \
|
src/processor/testdata/minidump2.stackwalk.machine_readable.out \
|
||||||
|
@ -227,13 +252,26 @@ EXTRA_DIST = \
|
||||||
src/processor/testdata/module2.out \
|
src/processor/testdata/module2.out \
|
||||||
src/processor/testdata/module3_bad.out \
|
src/processor/testdata/module3_bad.out \
|
||||||
src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym \
|
src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym \
|
||||||
src/processor/testdata/symbols/test_app.pdb/8DDB7E9A365748938D6EB08B1DCA31AA1/test_app.sym \
|
src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym \
|
||||||
src/processor/testdata/test_app.cc \
|
src/processor/testdata/test_app.cc \
|
||||||
|
src/tools/mac/crash_report/crash_report.mm \
|
||||||
|
src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj \
|
||||||
|
src/tools/mac/crash_report/on_demand_symbol_supplier.h \
|
||||||
|
src/tools/mac/crash_report/on_demand_symbol_supplier.mm \
|
||||||
|
src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj \
|
||||||
|
src/tools/mac/dump_syms/dump_syms_tool.m \
|
||||||
|
src/tools/mac/symupload/minidump_upload.m \
|
||||||
|
src/tools/mac/symupload/symupload.m \
|
||||||
|
src/tools/mac/symupload/symupload.xcodeproj/project.pbxproj \
|
||||||
|
src/tools/windows/converter/ms_symbol_server_converter.cc \
|
||||||
|
src/tools/windows/converter/ms_symbol_server_converter.h \
|
||||||
|
src/tools/windows/converter/ms_symbol_server_converter.vcproj \
|
||||||
src/tools/windows/dump_syms/dump_syms.cc \
|
src/tools/windows/dump_syms/dump_syms.cc \
|
||||||
src/tools/windows/dump_syms/dump_syms.vcproj \
|
src/tools/windows/dump_syms/dump_syms.vcproj \
|
||||||
src/tools/windows/dump_syms/run_regtest.sh \
|
src/tools/windows/dump_syms/run_regtest.sh \
|
||||||
src/tools/windows/dump_syms/testdata/dump_syms_regtest.out \
|
src/tools/windows/dump_syms/testdata/dump_syms_regtest.cc \
|
||||||
src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb \
|
src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb \
|
||||||
|
src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym \
|
||||||
src/tools/windows/symupload/symupload.cc \
|
src/tools/windows/symupload/symupload.cc \
|
||||||
src/tools/windows/symupload/symupload.vcproj
|
src/tools/windows/symupload/symupload.vcproj
|
||||||
|
|
||||||
|
|
94
Makefile.in
94
Makefile.in
|
@ -107,9 +107,9 @@ am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(bindir)" \
|
||||||
"$(DESTDIR)$(docdir)"
|
"$(DESTDIR)$(docdir)"
|
||||||
libLTLIBRARIES_INSTALL = $(INSTALL)
|
libLTLIBRARIES_INSTALL = $(INSTALL)
|
||||||
LTLIBRARIES = $(lib_LTLIBRARIES)
|
LTLIBRARIES = $(lib_LTLIBRARIES)
|
||||||
src_libairbag_la_LIBADD =
|
src_libbreakpad_la_LIBADD =
|
||||||
am__dirstamp = $(am__leading_dot)dirstamp
|
am__dirstamp = $(am__leading_dot)dirstamp
|
||||||
am_src_libairbag_la_OBJECTS = src/processor/basic_code_modules.lo \
|
am_src_libbreakpad_la_OBJECTS = src/processor/basic_code_modules.lo \
|
||||||
src/processor/basic_source_line_resolver.lo \
|
src/processor/basic_source_line_resolver.lo \
|
||||||
src/processor/call_stack.lo src/processor/minidump.lo \
|
src/processor/call_stack.lo src/processor/minidump.lo \
|
||||||
src/processor/minidump_processor.lo \
|
src/processor/minidump_processor.lo \
|
||||||
|
@ -118,7 +118,7 @@ am_src_libairbag_la_OBJECTS = src/processor/basic_code_modules.lo \
|
||||||
src/processor/simple_symbol_supplier.lo \
|
src/processor/simple_symbol_supplier.lo \
|
||||||
src/processor/stackwalker.lo src/processor/stackwalker_ppc.lo \
|
src/processor/stackwalker.lo src/processor/stackwalker_ppc.lo \
|
||||||
src/processor/stackwalker_x86.lo
|
src/processor/stackwalker_x86.lo
|
||||||
src_libairbag_la_OBJECTS = $(am_src_libairbag_la_OBJECTS)
|
src_libbreakpad_la_OBJECTS = $(am_src_libbreakpad_la_OBJECTS)
|
||||||
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
|
||||||
@SELFTEST_TRUE@am__EXEEXT_1 = \
|
@SELFTEST_TRUE@am__EXEEXT_1 = \
|
||||||
@SELFTEST_TRUE@ src/processor/stackwalker_selftest$(EXEEXT)
|
@SELFTEST_TRUE@ src/processor/stackwalker_selftest$(EXEEXT)
|
||||||
|
@ -216,7 +216,7 @@ LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
|
||||||
CCLD = $(CC)
|
CCLD = $(CC)
|
||||||
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
|
||||||
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
$(AM_LDFLAGS) $(LDFLAGS) -o $@
|
||||||
SOURCES = $(src_libairbag_la_SOURCES) \
|
SOURCES = $(src_libbreakpad_la_SOURCES) \
|
||||||
$(src_processor_address_map_unittest_SOURCES) \
|
$(src_processor_address_map_unittest_SOURCES) \
|
||||||
$(src_processor_basic_source_line_resolver_unittest_SOURCES) \
|
$(src_processor_basic_source_line_resolver_unittest_SOURCES) \
|
||||||
$(src_processor_contained_range_map_unittest_SOURCES) \
|
$(src_processor_contained_range_map_unittest_SOURCES) \
|
||||||
|
@ -227,7 +227,7 @@ SOURCES = $(src_libairbag_la_SOURCES) \
|
||||||
$(src_processor_postfix_evaluator_unittest_SOURCES) \
|
$(src_processor_postfix_evaluator_unittest_SOURCES) \
|
||||||
$(src_processor_range_map_unittest_SOURCES) \
|
$(src_processor_range_map_unittest_SOURCES) \
|
||||||
$(src_processor_stackwalker_selftest_SOURCES)
|
$(src_processor_stackwalker_selftest_SOURCES)
|
||||||
DIST_SOURCES = $(src_libairbag_la_SOURCES) \
|
DIST_SOURCES = $(src_libbreakpad_la_SOURCES) \
|
||||||
$(src_processor_address_map_unittest_SOURCES) \
|
$(src_processor_address_map_unittest_SOURCES) \
|
||||||
$(src_processor_basic_source_line_resolver_unittest_SOURCES) \
|
$(src_processor_basic_source_line_resolver_unittest_SOURCES) \
|
||||||
$(src_processor_contained_range_map_unittest_SOURCES) \
|
$(src_processor_contained_range_map_unittest_SOURCES) \
|
||||||
|
@ -368,23 +368,23 @@ dist_doc_DATA = \
|
||||||
NEWS \
|
NEWS \
|
||||||
README
|
README
|
||||||
|
|
||||||
lib_LTLIBRARIES = src/libairbag.la
|
lib_LTLIBRARIES = src/libbreakpad.la
|
||||||
src_libairbag_la_SOURCES = \
|
src_libbreakpad_la_SOURCES = \
|
||||||
src/google_airbag/common/airbag_types.h \
|
src/google_breakpad/common/breakpad_types.h \
|
||||||
src/google_airbag/common/minidump_format.h \
|
src/google_breakpad/common/minidump_format.h \
|
||||||
src/google_airbag/processor/basic_source_line_resolver.h \
|
src/google_breakpad/processor/basic_source_line_resolver.h \
|
||||||
src/google_airbag/processor/call_stack.h \
|
src/google_breakpad/processor/call_stack.h \
|
||||||
src/google_airbag/processor/code_module.h \
|
src/google_breakpad/processor/code_module.h \
|
||||||
src/google_airbag/processor/code_modules.h \
|
src/google_breakpad/processor/code_modules.h \
|
||||||
src/google_airbag/processor/memory_region.h \
|
src/google_breakpad/processor/memory_region.h \
|
||||||
src/google_airbag/processor/minidump.h \
|
src/google_breakpad/processor/minidump.h \
|
||||||
src/google_airbag/processor/minidump_processor.h \
|
src/google_breakpad/processor/minidump_processor.h \
|
||||||
src/google_airbag/processor/process_state.h \
|
src/google_breakpad/processor/process_state.h \
|
||||||
src/google_airbag/processor/stack_frame.h \
|
src/google_breakpad/processor/stack_frame.h \
|
||||||
src/google_airbag/processor/stack_frame_cpu.h \
|
src/google_breakpad/processor/stack_frame_cpu.h \
|
||||||
src/google_airbag/processor/stackwalker.h \
|
src/google_breakpad/processor/stackwalker.h \
|
||||||
src/google_airbag/processor/symbol_supplier.h \
|
src/google_breakpad/processor/symbol_supplier.h \
|
||||||
src/google_airbag/processor/system_info.h \
|
src/google_breakpad/processor/system_info.h \
|
||||||
src/processor/address_map.h \
|
src/processor/address_map.h \
|
||||||
src/processor/address_map-inl.h \
|
src/processor/address_map-inl.h \
|
||||||
src/processor/basic_code_module.h \
|
src/processor/basic_code_module.h \
|
||||||
|
@ -497,16 +497,40 @@ src_processor_minidump_stackwalk_LDADD = \
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
$(SCRIPTS) \
|
$(SCRIPTS) \
|
||||||
|
src/client/mac/handler/exception_handler.cc \
|
||||||
|
src/client/mac/handler/exception_handler.h \
|
||||||
|
src/client/mac/handler/exception_handler_test.cc \
|
||||||
|
src/client/mac/handler/minidump_generator.cc \
|
||||||
|
src/client/mac/handler/minidump_generator.h \
|
||||||
|
src/client/mac/handler/minidump_generator_test.cc \
|
||||||
|
src/client/mac/handler/minidump_test.xcodeproj/project.pbxproj \
|
||||||
src/client/minidump_file_writer.cc \
|
src/client/minidump_file_writer.cc \
|
||||||
src/client/minidump_file_writer.h \
|
src/client/minidump_file_writer.h \
|
||||||
src/client/minidump_file_writer-inl.h \
|
src/client/minidump_file_writer-inl.h \
|
||||||
src/client/windows/airbag_client.sln \
|
src/client/minidump_file_writer_unittest.cc \
|
||||||
|
src/client/windows/breakpad_client.sln \
|
||||||
src/client/windows/handler/exception_handler.cc \
|
src/client/windows/handler/exception_handler.cc \
|
||||||
src/client/windows/handler/exception_handler.h \
|
src/client/windows/handler/exception_handler.h \
|
||||||
src/client/windows/handler/exception_handler.vcproj \
|
src/client/windows/handler/exception_handler.vcproj \
|
||||||
src/client/windows/sender/crash_report_sender.cc \
|
src/client/windows/sender/crash_report_sender.cc \
|
||||||
src/client/windows/sender/crash_report_sender.h \
|
src/client/windows/sender/crash_report_sender.h \
|
||||||
src/client/windows/sender/crash_report_sender.vcproj \
|
src/client/windows/sender/crash_report_sender.vcproj \
|
||||||
|
src/common/convert_UTF.c \
|
||||||
|
src/common/convert_UTF.h \
|
||||||
|
src/common/mac/HTTPMultipartUpload.h \
|
||||||
|
src/common/mac/HTTPMultipartUpload.m \
|
||||||
|
src/common/mac/dump_syms.h \
|
||||||
|
src/common/mac/dump_syms.mm \
|
||||||
|
src/common/mac/file_id.cc \
|
||||||
|
src/common/mac/file_id.h \
|
||||||
|
src/common/mac/macho_id.cc \
|
||||||
|
src/common/mac/macho_id.h \
|
||||||
|
src/common/mac/macho_walker.cc \
|
||||||
|
src/common/mac/macho_walker.h \
|
||||||
|
src/common/mac/string_utilities.cc \
|
||||||
|
src/common/mac/string_utilities.h \
|
||||||
|
src/common/string_conversion.cc \
|
||||||
|
src/common/string_conversion.h \
|
||||||
src/common/windows/guid_string.cc \
|
src/common/windows/guid_string.cc \
|
||||||
src/common/windows/guid_string.h \
|
src/common/windows/guid_string.h \
|
||||||
src/common/windows/http_upload.cc \
|
src/common/windows/http_upload.cc \
|
||||||
|
@ -514,6 +538,7 @@ EXTRA_DIST = \
|
||||||
src/common/windows/pdb_source_line_writer.cc \
|
src/common/windows/pdb_source_line_writer.cc \
|
||||||
src/common/windows/pdb_source_line_writer.h \
|
src/common/windows/pdb_source_line_writer.h \
|
||||||
src/common/windows/string_utils-inl.h \
|
src/common/windows/string_utils-inl.h \
|
||||||
|
src/common/windows/string_utils.cc \
|
||||||
src/processor/testdata/minidump2.dmp \
|
src/processor/testdata/minidump2.dmp \
|
||||||
src/processor/testdata/minidump2.dump.out \
|
src/processor/testdata/minidump2.dump.out \
|
||||||
src/processor/testdata/minidump2.stackwalk.machine_readable.out \
|
src/processor/testdata/minidump2.stackwalk.machine_readable.out \
|
||||||
|
@ -522,13 +547,26 @@ EXTRA_DIST = \
|
||||||
src/processor/testdata/module2.out \
|
src/processor/testdata/module2.out \
|
||||||
src/processor/testdata/module3_bad.out \
|
src/processor/testdata/module3_bad.out \
|
||||||
src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym \
|
src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542/kernel32.sym \
|
||||||
src/processor/testdata/symbols/test_app.pdb/8DDB7E9A365748938D6EB08B1DCA31AA1/test_app.sym \
|
src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1/test_app.sym \
|
||||||
src/processor/testdata/test_app.cc \
|
src/processor/testdata/test_app.cc \
|
||||||
|
src/tools/mac/crash_report/crash_report.mm \
|
||||||
|
src/tools/mac/crash_report/crash_report.xcodeproj/project.pbxproj \
|
||||||
|
src/tools/mac/crash_report/on_demand_symbol_supplier.h \
|
||||||
|
src/tools/mac/crash_report/on_demand_symbol_supplier.mm \
|
||||||
|
src/tools/mac/dump_syms/dump_syms.xcodeproj/project.pbxproj \
|
||||||
|
src/tools/mac/dump_syms/dump_syms_tool.m \
|
||||||
|
src/tools/mac/symupload/minidump_upload.m \
|
||||||
|
src/tools/mac/symupload/symupload.m \
|
||||||
|
src/tools/mac/symupload/symupload.xcodeproj/project.pbxproj \
|
||||||
|
src/tools/windows/converter/ms_symbol_server_converter.cc \
|
||||||
|
src/tools/windows/converter/ms_symbol_server_converter.h \
|
||||||
|
src/tools/windows/converter/ms_symbol_server_converter.vcproj \
|
||||||
src/tools/windows/dump_syms/dump_syms.cc \
|
src/tools/windows/dump_syms/dump_syms.cc \
|
||||||
src/tools/windows/dump_syms/dump_syms.vcproj \
|
src/tools/windows/dump_syms/dump_syms.vcproj \
|
||||||
src/tools/windows/dump_syms/run_regtest.sh \
|
src/tools/windows/dump_syms/run_regtest.sh \
|
||||||
src/tools/windows/dump_syms/testdata/dump_syms_regtest.out \
|
src/tools/windows/dump_syms/testdata/dump_syms_regtest.cc \
|
||||||
src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb \
|
src/tools/windows/dump_syms/testdata/dump_syms_regtest.pdb \
|
||||||
|
src/tools/windows/dump_syms/testdata/dump_syms_regtest.sym \
|
||||||
src/tools/windows/symupload/symupload.cc \
|
src/tools/windows/symupload/symupload.cc \
|
||||||
src/tools/windows/symupload/symupload.vcproj
|
src/tools/windows/symupload/symupload.vcproj
|
||||||
|
|
||||||
|
@ -646,8 +684,8 @@ src/processor/stackwalker_x86.lo: src/processor/$(am__dirstamp) \
|
||||||
src/$(am__dirstamp):
|
src/$(am__dirstamp):
|
||||||
@$(mkdir_p) src
|
@$(mkdir_p) src
|
||||||
@: > src/$(am__dirstamp)
|
@: > src/$(am__dirstamp)
|
||||||
src/libairbag.la: $(src_libairbag_la_OBJECTS) $(src_libairbag_la_DEPENDENCIES) src/$(am__dirstamp)
|
src/libbreakpad.la: $(src_libbreakpad_la_OBJECTS) $(src_libbreakpad_la_DEPENDENCIES) src/$(am__dirstamp)
|
||||||
$(CXXLINK) -rpath $(libdir) $(src_libairbag_la_LDFLAGS) $(src_libairbag_la_OBJECTS) $(src_libairbag_la_LIBADD) $(LIBS)
|
$(CXXLINK) -rpath $(libdir) $(src_libbreakpad_la_LDFLAGS) $(src_libbreakpad_la_OBJECTS) $(src_libbreakpad_la_LIBADD) $(LIBS)
|
||||||
install-binPROGRAMS: $(bin_PROGRAMS)
|
install-binPROGRAMS: $(bin_PROGRAMS)
|
||||||
@$(NORMAL_INSTALL)
|
@$(NORMAL_INSTALL)
|
||||||
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
|
||||||
|
@ -987,7 +1025,7 @@ check-TESTS: $(TESTS)
|
||||||
distdir: $(DISTFILES)
|
distdir: $(DISTFILES)
|
||||||
$(am__remove_distdir)
|
$(am__remove_distdir)
|
||||||
mkdir $(distdir)
|
mkdir $(distdir)
|
||||||
$(mkdir_p) $(distdir)/autotools $(distdir)/src $(distdir)/src/client $(distdir)/src/client/windows $(distdir)/src/client/windows/handler $(distdir)/src/client/windows/sender $(distdir)/src/common/windows $(distdir)/src/processor $(distdir)/src/processor/testdata $(distdir)/src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542 $(distdir)/src/processor/testdata/symbols/test_app.pdb/8DDB7E9A365748938D6EB08B1DCA31AA1 $(distdir)/src/tools/windows/dump_syms $(distdir)/src/tools/windows/dump_syms/testdata $(distdir)/src/tools/windows/symupload
|
$(mkdir_p) $(distdir)/autotools $(distdir)/src $(distdir)/src/client $(distdir)/src/client/mac/handler $(distdir)/src/client/mac/handler/minidump_test.xcodeproj $(distdir)/src/client/windows $(distdir)/src/client/windows/handler $(distdir)/src/client/windows/sender $(distdir)/src/common $(distdir)/src/common/mac $(distdir)/src/common/windows $(distdir)/src/processor $(distdir)/src/processor/testdata $(distdir)/src/processor/testdata/symbols/kernel32.pdb/BCE8785C57B44245A669896B6A19B9542 $(distdir)/src/processor/testdata/symbols/test_app.pdb/5A9832E5287241C1838ED98914E9B7FF1 $(distdir)/src/tools/mac/crash_report $(distdir)/src/tools/mac/crash_report/crash_report.xcodeproj $(distdir)/src/tools/mac/dump_syms $(distdir)/src/tools/mac/dump_syms/dump_syms.xcodeproj $(distdir)/src/tools/mac/symupload $(distdir)/src/tools/mac/symupload/symupload.xcodeproj $(distdir)/src/tools/windows/converter $(distdir)/src/tools/windows/dump_syms $(distdir)/src/tools/windows/dump_syms/testdata $(distdir)/src/tools/windows/symupload
|
||||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||||
list='$(DISTFILES)'; for file in $$list; do \
|
list='$(DISTFILES)'; for file in $$list; do \
|
||||||
|
|
2
README
2
README
|
@ -1,2 +1,2 @@
|
||||||
Airbag is a set of client and server components which implement a
|
Breakpad is a set of client and server components which implement a
|
||||||
crash-reporting system.
|
crash-reporting system.
|
||||||
|
|
24
configure
vendored
24
configure
vendored
|
@ -1,6 +1,6 @@
|
||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.60 for airbag 0.1.
|
# Generated by GNU Autoconf 2.60 for breakpad 0.1.
|
||||||
#
|
#
|
||||||
# Report bugs to <opensource@google.com>.
|
# Report bugs to <opensource@google.com>.
|
||||||
#
|
#
|
||||||
|
@ -711,10 +711,10 @@ MAKEFLAGS=
|
||||||
SHELL=${CONFIG_SHELL-/bin/sh}
|
SHELL=${CONFIG_SHELL-/bin/sh}
|
||||||
|
|
||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='airbag'
|
PACKAGE_NAME='breakpad'
|
||||||
PACKAGE_TARNAME='airbag'
|
PACKAGE_TARNAME='breakpad'
|
||||||
PACKAGE_VERSION='0.1'
|
PACKAGE_VERSION='0.1'
|
||||||
PACKAGE_STRING='airbag 0.1'
|
PACKAGE_STRING='breakpad 0.1'
|
||||||
PACKAGE_BUGREPORT='opensource@google.com'
|
PACKAGE_BUGREPORT='opensource@google.com'
|
||||||
|
|
||||||
ac_unique_file="README"
|
ac_unique_file="README"
|
||||||
|
@ -1376,7 +1376,7 @@ if test "$ac_init_help" = "long"; then
|
||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures airbag 0.1 to adapt to many kinds of systems.
|
\`configure' configures breakpad 0.1 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
|
@ -1424,7 +1424,7 @@ Fine tuning of the installation directories:
|
||||||
--infodir=DIR info documentation [DATAROOTDIR/info]
|
--infodir=DIR info documentation [DATAROOTDIR/info]
|
||||||
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
|
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
|
||||||
--mandir=DIR man documentation [DATAROOTDIR/man]
|
--mandir=DIR man documentation [DATAROOTDIR/man]
|
||||||
--docdir=DIR documentation root [DATAROOTDIR/doc/airbag]
|
--docdir=DIR documentation root [DATAROOTDIR/doc/breakpad]
|
||||||
--htmldir=DIR html documentation [DOCDIR]
|
--htmldir=DIR html documentation [DOCDIR]
|
||||||
--dvidir=DIR dvi documentation [DOCDIR]
|
--dvidir=DIR dvi documentation [DOCDIR]
|
||||||
--pdfdir=DIR pdf documentation [DOCDIR]
|
--pdfdir=DIR pdf documentation [DOCDIR]
|
||||||
|
@ -1446,7 +1446,7 @@ fi
|
||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of airbag 0.1:";;
|
short | recursive ) echo "Configuration of breakpad 0.1:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
|
@ -1549,7 +1549,7 @@ fi
|
||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
airbag configure 0.1
|
breakpad configure 0.1
|
||||||
generated by GNU Autoconf 2.60
|
generated by GNU Autoconf 2.60
|
||||||
|
|
||||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
|
||||||
|
@ -1563,7 +1563,7 @@ cat >config.log <<_ACEOF
|
||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by airbag $as_me 0.1, which was
|
It was created by breakpad $as_me 0.1, which was
|
||||||
generated by GNU Autoconf 2.60. Invocation command line was
|
generated by GNU Autoconf 2.60. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
|
@ -2234,7 +2234,7 @@ fi
|
||||||
|
|
||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='airbag'
|
PACKAGE='breakpad'
|
||||||
VERSION='0.1'
|
VERSION='0.1'
|
||||||
|
|
||||||
|
|
||||||
|
@ -20403,7 +20403,7 @@ exec 6>&1
|
||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by airbag $as_me 0.1, which was
|
This file was extended by breakpad $as_me 0.1, which was
|
||||||
generated by GNU Autoconf 2.60. Invocation command line was
|
generated by GNU Autoconf 2.60. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
|
@ -20456,7 +20456,7 @@ Report bugs to <bug-autoconf@gnu.org>."
|
||||||
_ACEOF
|
_ACEOF
|
||||||
cat >>$CONFIG_STATUS <<_ACEOF
|
cat >>$CONFIG_STATUS <<_ACEOF
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
airbag config.status 0.1
|
breakpad config.status 0.1
|
||||||
configured by $0, generated by GNU Autoconf 2.60,
|
configured by $0, generated by GNU Autoconf 2.60,
|
||||||
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
|
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
|
||||||
|
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
AC_PREREQ(2.57)
|
AC_PREREQ(2.57)
|
||||||
|
|
||||||
AC_INIT(airbag, 0.1, opensource@google.com)
|
AC_INIT(breakpad, 0.1, opensource@google.com)
|
||||||
dnl Sanity check: the argument is just a file that should exist.
|
dnl Sanity check: the argument is just a file that should exist.
|
||||||
AC_CONFIG_SRCDIR(README)
|
AC_CONFIG_SRCDIR(README)
|
||||||
AC_CONFIG_AUX_DIR(autotools)
|
AC_CONFIG_AUX_DIR(autotools)
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#include "client/mac/handler/exception_handler.h"
|
#include "client/mac/handler/exception_handler.h"
|
||||||
#include "client/mac/handler/minidump_generator.h"
|
#include "client/mac/handler/minidump_generator.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::map;
|
using std::map;
|
||||||
|
|
||||||
|
@ -512,4 +512,4 @@ void ExceptionHandler::UpdateNextID() {
|
||||||
next_minidump_id_c_ = next_minidump_id_.c_str();
|
next_minidump_id_c_ = next_minidump_id_.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
|
|
||||||
|
@ -48,13 +48,13 @@ struct ExceptionParameters;
|
||||||
|
|
||||||
class ExceptionHandler {
|
class ExceptionHandler {
|
||||||
public:
|
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
|
// processing of an exception. A FilterCallback is called before writing
|
||||||
// a minidump. context is the parameter supplied by the user as
|
// a minidump. context is the parameter supplied by the user as
|
||||||
// callback_context when the handler was created.
|
// callback_context when the handler was created.
|
||||||
//
|
//
|
||||||
// If a FilterCallback returns true, Airbag will continue processing,
|
// If a FilterCallback returns true, Breakpad will continue processing,
|
||||||
// attempting to write a minidump. If a FilterCallback returns false, Airbag
|
// attempting to write a minidump. If a FilterCallback returns false, Breakpad
|
||||||
// will immediately report the exception as unhandled without writing a
|
// will immediately report the exception as unhandled without writing a
|
||||||
// minidump, allowing another handler the opportunity to handle it.
|
// minidump, allowing another handler the opportunity to handle it.
|
||||||
typedef bool (*FilterCallback)(void *context);
|
typedef bool (*FilterCallback)(void *context);
|
||||||
|
@ -64,7 +64,7 @@ class ExceptionHandler {
|
||||||
// file is <dump_dir>/<minidump_id>.dmp.
|
// file is <dump_dir>/<minidump_id>.dmp.
|
||||||
// |context| is the value passed into the constructor.
|
// |context| is the value passed into the constructor.
|
||||||
// |succeeded| indicates whether a minidump file was successfully written.
|
// |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
|
// Return false to allow any other exception handlers to process the
|
||||||
// exception.
|
// exception.
|
||||||
typedef bool (*MinidumpCallback)(const char *dump_dir,
|
typedef bool (*MinidumpCallback)(const char *dump_dir,
|
||||||
|
@ -183,6 +183,6 @@ class ExceptionHandler {
|
||||||
bool use_minidump_write_mutex_;
|
bool use_minidump_write_mutex_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // CLIENT_MAC_HANDLER_EXCEPTION_HANDLER_H__
|
#endif // CLIENT_MAC_HANDLER_EXCEPTION_HANDLER_H__
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
//
|
|
||||||
// Copyright (c) 2006, Google Inc.
|
// Copyright (c) 2006, Google Inc.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
@ -39,6 +38,7 @@ g++ -framework CoreFoundation -I../../.. \
|
||||||
exception_handler_test.cc \
|
exception_handler_test.cc \
|
||||||
-o exception_handler_test
|
-o exception_handler_test
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#include <pwd.h>
|
#include <pwd.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
@ -49,7 +49,7 @@ g++ -framework CoreFoundation -I../../.. \
|
||||||
#include "minidump_generator.h"
|
#include "minidump_generator.h"
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
using google_airbag::ExceptionHandler;
|
using google_breakpad::ExceptionHandler;
|
||||||
|
|
||||||
static void *SleepyFunction(void *) {
|
static void *SleepyFunction(void *) {
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
using MacStringUtils::ConvertToString;
|
using MacStringUtils::ConvertToString;
|
||||||
using MacStringUtils::IntegerValueAtIndex;
|
using MacStringUtils::IntegerValueAtIndex;
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
MinidumpGenerator::MinidumpGenerator()
|
MinidumpGenerator::MinidumpGenerator()
|
||||||
: exception_type_(0),
|
: exception_type_(0),
|
||||||
|
@ -136,7 +136,7 @@ bool MinidumpGenerator::Write(const char *path) {
|
||||||
&MinidumpGenerator::WriteSystemInfoStream,
|
&MinidumpGenerator::WriteSystemInfoStream,
|
||||||
&MinidumpGenerator::WriteModuleListStream,
|
&MinidumpGenerator::WriteModuleListStream,
|
||||||
&MinidumpGenerator::WriteMiscInfoStream,
|
&MinidumpGenerator::WriteMiscInfoStream,
|
||||||
&MinidumpGenerator::WriteAirbagInfoStream,
|
&MinidumpGenerator::WriteBreakpadInfoStream,
|
||||||
// Exception stream needs to be the last entry in this array as it may
|
// 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
|
// be omitted in the case where the minidump is written without an
|
||||||
// exception.
|
// exception.
|
||||||
|
@ -679,24 +679,24 @@ bool MinidumpGenerator::WriteMiscInfoStream(MDRawDirectory *misc_info_stream) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MinidumpGenerator::WriteAirbagInfoStream(
|
bool MinidumpGenerator::WriteBreakpadInfoStream(
|
||||||
MDRawDirectory *airbag_info_stream) {
|
MDRawDirectory *breakpad_info_stream) {
|
||||||
TypedMDRVA<MDRawAirbagInfo> info(&writer_);
|
TypedMDRVA<MDRawBreakpadInfo> info(&writer_);
|
||||||
|
|
||||||
if (!info.Allocate())
|
if (!info.Allocate())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
airbag_info_stream->stream_type = MD_AIRBAG_INFO_STREAM;
|
breakpad_info_stream->stream_type = MD_BREAKPAD_INFO_STREAM;
|
||||||
airbag_info_stream->location = info.location();
|
breakpad_info_stream->location = info.location();
|
||||||
MDRawAirbagInfo *info_ptr = info.get();
|
MDRawBreakpadInfo *info_ptr = info.get();
|
||||||
|
|
||||||
if (exception_thread_ && exception_type_) {
|
if (exception_thread_ && exception_type_) {
|
||||||
info_ptr->validity = MD_AIRBAG_INFO_VALID_DUMP_THREAD_ID |
|
info_ptr->validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID |
|
||||||
MD_AIRBAG_INFO_VALID_REQUESTING_THREAD_ID;
|
MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID;
|
||||||
info_ptr->dump_thread_id = mach_thread_self();
|
info_ptr->dump_thread_id = mach_thread_self();
|
||||||
info_ptr->requesting_thread_id = exception_thread_;
|
info_ptr->requesting_thread_id = exception_thread_;
|
||||||
} else {
|
} 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->dump_thread_id = mach_thread_self();
|
||||||
info_ptr->requesting_thread_id = 0;
|
info_ptr->requesting_thread_id = 0;
|
||||||
}
|
}
|
||||||
|
@ -704,4 +704,4 @@ bool MinidumpGenerator::WriteAirbagInfoStream(
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -37,9 +37,9 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "client/minidump_file_writer.h"
|
#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;
|
using std::string;
|
||||||
|
|
||||||
|
@ -84,7 +84,7 @@ class MinidumpGenerator {
|
||||||
bool WriteSystemInfoStream(MDRawDirectory *system_info_stream);
|
bool WriteSystemInfoStream(MDRawDirectory *system_info_stream);
|
||||||
bool WriteModuleListStream(MDRawDirectory *module_list_stream);
|
bool WriteModuleListStream(MDRawDirectory *module_list_stream);
|
||||||
bool WriteMiscInfoStream(MDRawDirectory *misc_info_stream);
|
bool WriteMiscInfoStream(MDRawDirectory *misc_info_stream);
|
||||||
bool WriteAirbagInfoStream(MDRawDirectory *airbag_info_stream);
|
bool WriteBreakpadInfoStream(MDRawDirectory *breakpad_info_stream);
|
||||||
|
|
||||||
// Helpers
|
// Helpers
|
||||||
u_int64_t CurrentPCForStack(thread_state_data_t state);
|
u_int64_t CurrentPCForStack(thread_state_data_t state);
|
||||||
|
@ -118,6 +118,6 @@ class MinidumpGenerator {
|
||||||
static int os_build_number_;
|
static int os_build_number_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // CLIENT_MAC_GENERATOR_MINIDUMP_GENERATOR_H__
|
#endif // CLIENT_MAC_GENERATOR_MINIDUMP_GENERATOR_H__
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
//
|
|
||||||
// Copyright (c) 2006, Google Inc.
|
// Copyright (c) 2006, Google Inc.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
@ -39,7 +38,7 @@
|
||||||
#include "minidump_file_writer.h"
|
#include "minidump_file_writer.h"
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
using google_airbag::MinidumpGenerator;
|
using google_breakpad::MinidumpGenerator;
|
||||||
|
|
||||||
static bool doneWritingReport = false;
|
static bool doneWritingReport = false;
|
||||||
|
|
||||||
|
|
|
@ -102,7 +102,7 @@
|
||||||
08FB7794FE84155DC02AAC07 /* MinidumpWriter */ = {
|
08FB7794FE84155DC02AAC07 /* MinidumpWriter */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
9BD82C040B0133420055103E /* Airbag */,
|
9BD82C040B0133420055103E /* Breakpad */,
|
||||||
08FB7795FE84155DC02AAC07 /* Source */,
|
08FB7795FE84155DC02AAC07 /* Source */,
|
||||||
9B37CEEA0AF98EB600FA4BD4 /* Frameworks */,
|
9B37CEEA0AF98EB600FA4BD4 /* Frameworks */,
|
||||||
1AB674ADFE9D54B511CA2CBB /* Products */,
|
1AB674ADFE9D54B511CA2CBB /* Products */,
|
||||||
|
@ -138,7 +138,7 @@
|
||||||
name = Frameworks;
|
name = Frameworks;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
9BD82C040B0133420055103E /* Airbag */ = {
|
9BD82C040B0133420055103E /* Breakpad */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
9B35FF560B267D5F008DE8C7 /* convert_UTF.c */,
|
9B35FF560B267D5F008DE8C7 /* convert_UTF.c */,
|
||||||
|
@ -155,7 +155,7 @@
|
||||||
9BD82C2B0B01345E0055103E /* string_utilities.cc */,
|
9BD82C2B0B01345E0055103E /* string_utilities.cc */,
|
||||||
9BD82C2C0B01345E0055103E /* string_utilities.h */,
|
9BD82C2C0B01345E0055103E /* string_utilities.h */,
|
||||||
);
|
);
|
||||||
name = Airbag;
|
name = Breakpad;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
/* End PBXGroup section */
|
/* End PBXGroup section */
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
|
|
||||||
#include "client/minidump_file_writer.h"
|
#include "client/minidump_file_writer.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
template<typename MDType>
|
template<typename MDType>
|
||||||
inline bool TypedMDRVA<MDType>::Allocate() {
|
inline bool TypedMDRVA<MDType>::Allocate() {
|
||||||
|
@ -86,6 +86,6 @@ inline bool TypedMDRVA<MDType>::Flush() {
|
||||||
return writer_->Copy(position_, &data_, sizeof(MDType));
|
return writer_->Copy(position_, &data_, sizeof(MDType));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // CLIENT_MINIDUMP_FILE_WRITER_INL_H__
|
#endif // CLIENT_MINIDUMP_FILE_WRITER_INL_H__
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
#include "client/minidump_file_writer-inl.h"
|
#include "client/minidump_file_writer-inl.h"
|
||||||
#include "common/string_conversion.h"
|
#include "common/string_conversion.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
const MDRVA MinidumpFileWriter::kInvalidMDRVA = static_cast<MDRVA>(-1);
|
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);
|
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.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
// minidump_file_writer.h: Implements file-based minidump generation. It's
|
// 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.
|
// project.
|
||||||
|
|
||||||
#ifndef CLIENT_MINIDUMP_FILE_WRITER_H__
|
#ifndef CLIENT_MINIDUMP_FILE_WRITER_H__
|
||||||
|
@ -36,9 +36,9 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "google_airbag/common/minidump_format.h"
|
#include "google_breakpad/common/minidump_format.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
class UntypedMDRVA;
|
class UntypedMDRVA;
|
||||||
template<typename MDType> class TypedMDRVA;
|
template<typename MDType> class TypedMDRVA;
|
||||||
|
@ -245,6 +245,6 @@ class TypedMDRVA : public UntypedMDRVA {
|
||||||
AllocationState allocation_state_;
|
AllocationState allocation_state_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // CLIENT_MINIDUMP_FILE_WRITER_H__
|
#endif // CLIENT_MINIDUMP_FILE_WRITER_H__
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
// Copyright (c) 2006, Google Inc. All rights reserved.
|
// Copyright (c) 2006, Google Inc.
|
||||||
// Author: waylonis@google.com (Dan Waylonis)
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
// Redistribution and use in source and binary forms, with or without
|
// Redistribution and use in source and binary forms, with or without
|
||||||
// modification, are permitted provided that the following conditions are
|
// 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
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
// Author: waylonis@google.com (Dan Waylonis)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
g++ -I../ ../common/convert_UTF.c \
|
g++ -I../ ../common/convert_UTF.c \
|
||||||
../common/string_conversion.cc \
|
../common/string_conversion.cc \
|
||||||
|
@ -40,7 +42,7 @@
|
||||||
|
|
||||||
#include "minidump_file_writer-inl.h"
|
#include "minidump_file_writer-inl.h"
|
||||||
|
|
||||||
using google_airbag::MinidumpFileWriter;
|
using google_breakpad::MinidumpFileWriter;
|
||||||
|
|
||||||
#define ASSERT_TRUE(cond) \
|
#define ASSERT_TRUE(cond) \
|
||||||
if (!(cond)) { \
|
if (!(cond)) { \
|
||||||
|
@ -72,7 +74,7 @@ static bool WriteFile(const char *path) {
|
||||||
MinidumpFileWriter writer;
|
MinidumpFileWriter writer;
|
||||||
if (writer.Open(path)) {
|
if (writer.Open(path)) {
|
||||||
// Test a single structure
|
// Test a single structure
|
||||||
google_airbag::TypedMDRVA<StringStructure> strings(&writer);
|
google_breakpad::TypedMDRVA<StringStructure> strings(&writer);
|
||||||
ASSERT_TRUE(strings.Allocate());
|
ASSERT_TRUE(strings.Allocate());
|
||||||
strings.get()->integer_value = 0xBEEF;
|
strings.get()->integer_value = 0xBEEF;
|
||||||
const char *first = "First String";
|
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));
|
ASSERT_TRUE(writer.WriteString(second, 0, &strings.get()->second_string));
|
||||||
|
|
||||||
// Test an array structure
|
// Test an array structure
|
||||||
google_airbag::TypedMDRVA<ArrayStructure> array(&writer);
|
google_breakpad::TypedMDRVA<ArrayStructure> array(&writer);
|
||||||
unsigned int count = 10;
|
unsigned int count = 10;
|
||||||
ASSERT_TRUE(array.AllocateArray(count));
|
ASSERT_TRUE(array.AllocateArray(count));
|
||||||
for (unsigned int i = 0; i < count; ++i) {
|
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
|
// 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,
|
ASSERT_TRUE(obj_array.AllocateObjectAndArray(count,
|
||||||
sizeof(ArrayStructure)));
|
sizeof(ArrayStructure)));
|
||||||
obj_array.get()->count = count;
|
obj_array.get()->count = count;
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
#include "client/windows/handler/exception_handler.h"
|
#include "client/windows/handler/exception_handler.h"
|
||||||
#include "common/windows/guid_string.h"
|
#include "common/windows/guid_string.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
static const int kExceptionHandlerThreadInitialStackSize = 64 * 1024;
|
static const int kExceptionHandlerThreadInitialStackSize = 64 * 1024;
|
||||||
|
|
||||||
|
@ -144,7 +144,7 @@ ExceptionHandler::~ExceptionHandler() {
|
||||||
} else {
|
} else {
|
||||||
// TODO(mmentovai): use advapi32!ReportEvent to log the warning to the
|
// TODO(mmentovai): use advapi32!ReportEvent to log the warning to the
|
||||||
// system's application event log.
|
// 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 =
|
for (vector<ExceptionHandler *>::iterator iterator =
|
||||||
handler_stack_->begin();
|
handler_stack_->begin();
|
||||||
iterator != handler_stack_->end();
|
iterator != handler_stack_->end();
|
||||||
|
@ -202,7 +202,7 @@ DWORD ExceptionHandler::ExceptionHandlerThreadMain(void *lpParameter) {
|
||||||
class AutoExceptionHandler {
|
class AutoExceptionHandler {
|
||||||
public:
|
public:
|
||||||
AutoExceptionHandler() {
|
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
|
// registered using this same HandleException function, and it needs to be
|
||||||
// called while this handler is running (either becaause this handler
|
// called while this handler is running (either becaause this handler
|
||||||
// declines to handle the exception, or an exception occurs during
|
// declines to handle the exception, or an exception occurs during
|
||||||
|
@ -415,23 +415,23 @@ bool ExceptionHandler::WriteMinidumpWithException(
|
||||||
except_info.ExceptionPointers = exinfo;
|
except_info.ExceptionPointers = exinfo;
|
||||||
except_info.ClientPointers = FALSE;
|
except_info.ClientPointers = FALSE;
|
||||||
|
|
||||||
// Add an MDRawAirbagInfo stream to the minidump, to provide additional
|
// Add an MDRawBreakpadInfo stream to the minidump, to provide additional
|
||||||
// information about the exception handler to the Airbag processor. The
|
// information about the exception handler to the Breakpad processor. The
|
||||||
// information will help the processor determine which threads are
|
// information will help the processor determine which threads are
|
||||||
// relevant. The Airbag processor does not require this information but
|
// relevant. The Breakpad processor does not require this information but
|
||||||
// can function better with Airbag-generated dumps when it is present.
|
// can function better with Breakpad-generated dumps when it is present.
|
||||||
// The native debugger is not harmed by the presence of this information.
|
// The native debugger is not harmed by the presence of this information.
|
||||||
MDRawAirbagInfo airbag_info;
|
MDRawBreakpadInfo breakpad_info;
|
||||||
airbag_info.validity = MD_AIRBAG_INFO_VALID_DUMP_THREAD_ID |
|
breakpad_info.validity = MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID |
|
||||||
MD_AIRBAG_INFO_VALID_REQUESTING_THREAD_ID;
|
MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID;
|
||||||
airbag_info.dump_thread_id = GetCurrentThreadId();
|
breakpad_info.dump_thread_id = GetCurrentThreadId();
|
||||||
airbag_info.requesting_thread_id = requesting_thread_id;
|
breakpad_info.requesting_thread_id = requesting_thread_id;
|
||||||
|
|
||||||
// Leave room in user_stream_array for a possible assertion info stream.
|
// Leave room in user_stream_array for a possible assertion info stream.
|
||||||
MINIDUMP_USER_STREAM user_stream_array[2];
|
MINIDUMP_USER_STREAM user_stream_array[2];
|
||||||
user_stream_array[0].Type = MD_AIRBAG_INFO_STREAM;
|
user_stream_array[0].Type = MD_BREAKPAD_INFO_STREAM;
|
||||||
user_stream_array[0].BufferSize = sizeof(airbag_info);
|
user_stream_array[0].BufferSize = sizeof(breakpad_info);
|
||||||
user_stream_array[0].Buffer = &airbag_info;
|
user_stream_array[0].Buffer = &breakpad_info;
|
||||||
|
|
||||||
MINIDUMP_USER_STREAM_INFORMATION user_streams;
|
MINIDUMP_USER_STREAM_INFORMATION user_streams;
|
||||||
user_streams.UserStreamCount = 1;
|
user_streams.UserStreamCount = 1;
|
||||||
|
@ -479,4 +479,4 @@ void ExceptionHandler::UpdateNextID() {
|
||||||
next_minidump_path_c_ = next_minidump_path_.c_str();
|
next_minidump_path_c_ = next_minidump_path_.c_str();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -70,24 +70,24 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#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::vector;
|
||||||
using std::wstring;
|
using std::wstring;
|
||||||
|
|
||||||
class ExceptionHandler {
|
class ExceptionHandler {
|
||||||
public:
|
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
|
// processing of an exception. A FilterCallback is called before writing
|
||||||
// a minidump. context is the parameter supplied by the user as
|
// a minidump. context is the parameter supplied by the user as
|
||||||
// callback_context when the handler was created. exinfo points to the
|
// callback_context when the handler was created. exinfo points to the
|
||||||
// exception record, if any; assertion points to assertion information,
|
// exception record, if any; assertion points to assertion information,
|
||||||
// if any.
|
// if any.
|
||||||
//
|
//
|
||||||
// If a FilterCallback returns true, Airbag will continue processing,
|
// If a FilterCallback returns true, Breakpad will continue processing,
|
||||||
// attempting to write a minidump. If a FilterCallback returns false, Airbag
|
// attempting to write a minidump. If a FilterCallback returns false, Breakpad
|
||||||
// will immediately report the exception as unhandled without writing a
|
// will immediately report the exception as unhandled without writing a
|
||||||
// minidump, allowing another handler the opportunity to handle it.
|
// minidump, allowing another handler the opportunity to handle it.
|
||||||
typedef bool (*FilterCallback)(void *context, EXCEPTION_POINTERS *exinfo,
|
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
|
// assertion points to information about an assertion if the handler was
|
||||||
// invoked by an assertion.
|
// 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
|
// 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.
|
// 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
|
// system as unhandled, allowing a debugger or native crash dialog the
|
||||||
// opportunity to handle the exception. Most callback implementations
|
// opportunity to handle the exception. Most callback implementations
|
||||||
// should normally return the value of |succeeded|, or when they wish to
|
// 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.
|
// Creates a new ExceptionHandler instance to handle writing minidumps.
|
||||||
// Before writing a minidump, the optional filter callback will be called.
|
// 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
|
// Minidump files will be written to dump_path, and the optional callback
|
||||||
// is called after writing the dump file, as described above.
|
// is called after writing the dump file, as described above.
|
||||||
// If install_handler is true, then a minidump will be written whenever
|
// 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
|
// 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
|
// 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
|
// 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_;
|
static LONG handler_stack_index_;
|
||||||
|
|
||||||
// handler_stack_critical_section_ guards operations on handler_stack_ and
|
// handler_stack_critical_section_ guards operations on handler_stack_ and
|
||||||
|
@ -313,7 +313,7 @@ class ExceptionHandler {
|
||||||
void operator=(const ExceptionHandler &);
|
void operator=(const ExceptionHandler &);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#pragma warning( pop )
|
#pragma warning( pop )
|
||||||
|
|
||||||
|
|
|
@ -295,7 +295,7 @@
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\..\..\google_airbag\common\minidump_format.h"
|
RelativePath="..\..\..\google_breakpad\common\minidump_format.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
<File
|
<File
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
#include "client/windows/sender/crash_report_sender.h"
|
#include "client/windows/sender/crash_report_sender.h"
|
||||||
#include "common/windows/http_upload.h"
|
#include "common/windows/http_upload.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
// static
|
// static
|
||||||
ReportResult CrashReportSender::SendCrashReport(
|
ReportResult CrashReportSender::SendCrashReport(
|
||||||
|
@ -55,4 +55,4 @@ ReportResult CrashReportSender::SendCrashReport(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::wstring;
|
using std::wstring;
|
||||||
using std::map;
|
using std::map;
|
||||||
|
@ -83,7 +83,7 @@ class CrashReportSender {
|
||||||
~CrashReportSender();
|
~CrashReportSender();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#pragma warning( pop )
|
#pragma warning( pop )
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@
|
||||||
|
|
||||||
// dump_syms.h: Interface for DumpSymbols. This class will take a mach-o file
|
// 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
|
// 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.
|
// NOTE: Only Stabs format is currently supported -- not DWARF.
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
#import <Foundation/Foundation.h>
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
//
|
|
||||||
// Copyright (c) 2006, Google Inc.
|
// Copyright (c) 2006, Google Inc.
|
||||||
// All rights reserved.
|
// All rights reserved.
|
||||||
//
|
//
|
||||||
|
@ -45,7 +44,7 @@
|
||||||
#import "dump_syms.h"
|
#import "dump_syms.h"
|
||||||
#import "common/mac/file_id.h"
|
#import "common/mac/file_id.h"
|
||||||
|
|
||||||
using google_airbag::FileID;
|
using google_breakpad::FileID;
|
||||||
|
|
||||||
static NSString *kAddressSymbolKey = @"symbol";
|
static NSString *kAddressSymbolKey = @"symbol";
|
||||||
static NSString *kAddressConvertedSymbolKey = @"converted_symbol";
|
static NSString *kAddressConvertedSymbolKey = @"converted_symbol";
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
|
||||||
// file_id.cc: Return a unique identifier for a file
|
// file_id.cc: Return a unique identifier for a file
|
||||||
//
|
//
|
||||||
// See file_id.h for documentation
|
// See file_id.h for documentation
|
||||||
|
@ -42,7 +42,7 @@
|
||||||
|
|
||||||
using MacFileUtilities::MachoID;
|
using MacFileUtilities::MachoID;
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
FileID::FileID(const char *path) {
|
FileID::FileID(const char *path) {
|
||||||
strlcpy(path_, path, sizeof(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;
|
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
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
|
||||||
// file_id.h: Return a unique identifier for a file
|
// file_id.h: Return a unique identifier for a file
|
||||||
//
|
//
|
||||||
// Author: Dan Waylonis
|
// Author: Dan Waylonis
|
||||||
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
class FileID {
|
class FileID {
|
||||||
public:
|
public:
|
||||||
|
@ -72,7 +72,7 @@ class FileID {
|
||||||
char path_[PATH_MAX];
|
char path_[PATH_MAX];
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // COMMON_MAC_FILE_ID_H__
|
#endif // COMMON_MAC_FILE_ID_H__
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
|
||||||
// macho_id.cc: Functions to gather identifying information from a macho file
|
// macho_id.cc: Functions to gather identifying information from a macho file
|
||||||
//
|
//
|
||||||
// See macho_id.h for documentation
|
// See macho_id.h for documentation
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
//
|
|
||||||
// macho_id.h: Functions to gather identifying information from a macho file
|
// macho_id.h: Functions to gather identifying information from a macho file
|
||||||
//
|
//
|
||||||
// Author: Dan Waylonis
|
// Author: Dan Waylonis
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// 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
|
// macho_walker.cc: Iterate over the load commands in a mach-o file
|
||||||
//
|
//
|
||||||
// See macho_walker.h for documentation
|
// See macho_walker.h for documentation
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// 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
|
// macho_walker.h: Iterate over the load commands in a mach-o file
|
||||||
//
|
//
|
||||||
// Author: Dan Waylonis
|
// Author: Dan Waylonis
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
|
|
||||||
namespace MacStringUtils {
|
namespace MacStringUtils {
|
||||||
|
|
||||||
using google_airbag::scoped_array;
|
using google_breakpad::scoped_array;
|
||||||
|
|
||||||
std::string ConvertToString(CFStringRef str) {
|
std::string ConvertToString(CFStringRef str) {
|
||||||
CFIndex length = CFStringGetLength(str);
|
CFIndex length = CFStringGetLength(str);
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
using std::string;
|
using std::string;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
void UTF8ToUTF16(const char *in, vector<u_int16_t> *out) {
|
void UTF8ToUTF16(const char *in, vector<u_int16_t> *out) {
|
||||||
size_t source_length = strlen(in);
|
size_t source_length = strlen(in);
|
||||||
|
@ -151,4 +151,4 @@ string UTF16ToUTF8(const vector<u_int16_t> &in, bool swap) {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::vector;
|
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.
|
// Convert |in| to UTF-8. If |swap| is true, swap bytes before converting.
|
||||||
std::string UTF16ToUTF8(const vector<u_int16_t> &in, bool swap);
|
std::string UTF16ToUTF8(const vector<u_int16_t> &in, bool swap);
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // COMMON_STRING_CONVERSION_H__
|
#endif // COMMON_STRING_CONVERSION_H__
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
|
|
||||||
#include "common/windows/guid_string.h"
|
#include "common/windows/guid_string.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
// static
|
// static
|
||||||
wstring GUIDString::GUIDToWString(GUID *guid) {
|
wstring GUIDString::GUIDToWString(GUID *guid) {
|
||||||
|
@ -65,4 +65,4 @@ wstring GUIDString::GUIDToSymbolServerWString(GUID *guid) {
|
||||||
return wstring(guid_string);
|
return wstring(guid_string);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::wstring;
|
using std::wstring;
|
||||||
|
|
||||||
|
@ -53,6 +53,6 @@ class GUIDString {
|
||||||
static wstring GUIDToSymbolServerWString(GUID *guid);
|
static wstring GUIDToSymbolServerWString(GUID *guid);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // COMMON_WINDOWS_GUID_STRING_H__
|
#endif // COMMON_WINDOWS_GUID_STRING_H__
|
||||||
|
|
|
@ -38,12 +38,12 @@
|
||||||
|
|
||||||
#include "common/windows/http_upload.h"
|
#include "common/windows/http_upload.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::ifstream;
|
using std::ifstream;
|
||||||
using std::ios;
|
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
|
// Helper class which closes an internet handle when it goes away
|
||||||
class HTTPUpload::AutoInternetHandle {
|
class HTTPUpload::AutoInternetHandle {
|
||||||
|
@ -368,4 +368,4 @@ bool HTTPUpload::CheckParameters(const map<wstring, wstring> ¶meters) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
using std::wstring;
|
using std::wstring;
|
||||||
|
@ -118,7 +118,7 @@ class HTTPUpload {
|
||||||
~HTTPUpload();
|
~HTTPUpload();
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#pragma warning( pop )
|
#pragma warning( pop )
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
#define UNDNAME_NO_ECSU 0x8000 // Suppresses enum/class/struct/union.
|
#define UNDNAME_NO_ECSU 0x8000 // Suppresses enum/class/struct/union.
|
||||||
#endif // UNDNAME_NO_ECSU
|
#endif // UNDNAME_NO_ECSU
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
PDBSourceLineWriter::PDBSourceLineWriter() : output_(NULL) {
|
PDBSourceLineWriter::PDBSourceLineWriter() : output_(NULL) {
|
||||||
}
|
}
|
||||||
|
@ -785,4 +785,4 @@ bool PDBSourceLineWriter::UsesGUID(bool *uses_guid) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -41,7 +41,7 @@ struct IDiaEnumLineNumbers;
|
||||||
struct IDiaSession;
|
struct IDiaSession;
|
||||||
struct IDiaSymbol;
|
struct IDiaSymbol;
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::wstring;
|
using std::wstring;
|
||||||
|
|
||||||
|
@ -158,6 +158,6 @@ class PDBSourceLineWriter {
|
||||||
void operator=(const PDBSourceLineWriter&);
|
void operator=(const PDBSourceLineWriter&);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // _PDB_SOURCE_LINE_WRITER_H__
|
#endif // _PDB_SOURCE_LINE_WRITER_H__
|
||||||
|
|
|
@ -49,7 +49,7 @@
|
||||||
#define WIN_STRING_FORMAT_LL "I64"
|
#define WIN_STRING_FORMAT_LL "I64"
|
||||||
#endif // MSC_VER >= 1400
|
#endif // MSC_VER >= 1400
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
using std::wstring;
|
using std::wstring;
|
||||||
|
@ -140,6 +140,6 @@ inline void WindowsStringUtils::safe_wcsncpy(wchar_t *destination,
|
||||||
#endif // _MSC_VER >= 1400
|
#endif // _MSC_VER >= 1400
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // COMMON_WINDOWS_STRING_UTILS_INL_H__
|
#endif // COMMON_WINDOWS_STRING_UTILS_INL_H__
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
#include "common/windows/string_utils-inl.h"
|
#include "common/windows/string_utils-inl.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
// static
|
// static
|
||||||
wstring WindowsStringUtils::GetBaseName(const wstring &filename) {
|
wstring WindowsStringUtils::GetBaseName(const wstring &filename) {
|
||||||
|
@ -89,4 +89,4 @@ bool WindowsStringUtils::safe_mbstowcs(const string &mbs, wstring *wcs) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
|
* 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++.)
|
* (This is C99 source, please don't corrupt it with C++.)
|
||||||
*
|
*
|
||||||
|
@ -37,8 +37,8 @@
|
||||||
*
|
*
|
||||||
* Author: Mark Mentovai */
|
* Author: Mark Mentovai */
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_COMMON_AIRBAG_TYPES_H__
|
#ifndef GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__
|
||||||
#define GOOGLE_AIRBAG_COMMON_AIRBAG_TYPES_H__
|
#define GOOGLE_BREAKPAD_COMMON_BREAKPAD_TYPES_H__
|
||||||
|
|
||||||
#ifndef _WIN32
|
#ifndef _WIN32
|
||||||
|
|
||||||
|
@ -60,6 +60,6 @@ typedef struct {
|
||||||
u_int64_t low;
|
u_int64_t low;
|
||||||
} u_int128_t;
|
} 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 */
|
* Author: Mark Mentovai */
|
||||||
|
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_COMMON_MINIDUMP_FORMAT_H__
|
#ifndef GOOGLE_BREAKPAD_COMMON_MINIDUMP_FORMAT_H__
|
||||||
#define GOOGLE_AIRBAG_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)
|
#if defined(_MSC_VER)
|
||||||
|
@ -195,7 +195,7 @@ typedef struct {
|
||||||
/* CONTEXT_ALL */
|
/* CONTEXT_ALL */
|
||||||
|
|
||||||
/* Non-x86 CPU identifiers found in the high 26 bits of
|
/* 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
|
* defined here for reference, to avoid assigning values that conflict
|
||||||
* (although some values already conflict). */
|
* (although some values already conflict). */
|
||||||
#define MD_CONTEXT_IA64 0x00080000 /* CONTEXT_IA64 */
|
#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
|
* mach/ppc/_types.h
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -277,7 +277,7 @@ typedef struct {
|
||||||
} MDRawContextPPC; /* Based on ppc_thread_state */
|
} MDRawContextPPC; /* Based on ppc_thread_state */
|
||||||
|
|
||||||
/* For (MDRawContextPPC).context_flags. These values indicate the type of
|
/* 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
|
* value was chosen to avoid likely conflicts with MD_CONTEXT_* for other
|
||||||
* CPUs. */
|
* CPUs. */
|
||||||
#define MD_CONTEXT_PPC 0x20000000
|
#define MD_CONTEXT_PPC 0x20000000
|
||||||
|
@ -493,8 +493,8 @@ typedef enum {
|
||||||
MD_MISC_INFO_STREAM = 15, /* MDRawMiscInfo */
|
MD_MISC_INFO_STREAM = 15, /* MDRawMiscInfo */
|
||||||
MD_LAST_RESERVED_STREAM = 0x0000ffff,
|
MD_LAST_RESERVED_STREAM = 0x0000ffff,
|
||||||
|
|
||||||
/* Airbag extension types. 0x4767 = "Gg" */
|
/* Breakpad extension types. 0x4767 = "Gg" */
|
||||||
MD_AIRBAG_INFO_STREAM = 0x47670001, /* MDRawAirbagInfo */
|
MD_BREAKPAD_INFO_STREAM = 0x47670001, /* MDRawBreakpadInfo */
|
||||||
MD_ASSERTION_INFO_STREAM = 0x47670002 /* MDRawAssertionInfo */
|
MD_ASSERTION_INFO_STREAM = 0x47670002 /* MDRawAssertionInfo */
|
||||||
} MDStreamType; /* MINIDUMP_STREAM_TYPE */
|
} MDStreamType; /* MINIDUMP_STREAM_TYPE */
|
||||||
|
|
||||||
|
@ -707,7 +707,7 @@ typedef enum {
|
||||||
/* EXCEPTION_POSSIBLE_DEADLOCK */
|
/* EXCEPTION_POSSIBLE_DEADLOCK */
|
||||||
} MDExceptionCodeWin;
|
} 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
|
* support. Based on Darwin/Mac OS X' mach/exception_types.h. This is
|
||||||
* what Mac OS X calls an "exception", not a "code". */
|
* what Mac OS X calls an "exception", not a "code". */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -733,7 +733,7 @@ typedef enum {
|
||||||
/* EXC_RPC_ALERT */
|
/* EXC_RPC_ALERT */
|
||||||
} MDExceptionMac;
|
} 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
|
* 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". */
|
* mach/i386/exception.h. This is what Mac OS X calls a "code". */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
|
@ -944,7 +944,7 @@ typedef enum {
|
||||||
MD_OS_WIN32_CE = 3, /* VER_PLATFORM_WIN32_CE, VER_PLATFORM_WIN32_HH
|
MD_OS_WIN32_CE = 3, /* VER_PLATFORM_WIN32_CE, VER_PLATFORM_WIN32_HH
|
||||||
* (Windows CE, Windows Mobile, "Handheld") */
|
* (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_UNIX = 0x8000, /* Generic Unix-ish */
|
||||||
MD_OS_MAC_OS_X = 0x8101, /* Mac OS X/Darwin */
|
MD_OS_MAC_OS_X = 0x8101, /* Mac OS X/Darwin */
|
||||||
MD_OS_LINUX = 0x8201, /* Linux */
|
MD_OS_LINUX = 0x8201, /* Linux */
|
||||||
|
@ -993,12 +993,12 @@ typedef enum {
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Airbag extension types
|
* Breakpad extension types
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
typedef struct {
|
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. */
|
* which of the other fields in the structure are valid. */
|
||||||
u_int32_t validity;
|
u_int32_t validity;
|
||||||
|
|
||||||
|
@ -1007,7 +1007,7 @@ typedef struct {
|
||||||
* a dedicated thread in that list was used to produce the minidump. If
|
* 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 MDRawThreadList does not contain a dedicated thread used to produce
|
||||||
* the minidump, this field should be set to 0 and the validity field
|
* 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;
|
u_int32_t dump_thread_id;
|
||||||
|
|
||||||
/* Thread ID of the thread that requested the minidump be produced. As
|
/* 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
|
* written. If the minidump was produced at the request of something
|
||||||
* other than a thread in the MDRawThreadList, this field should be set
|
* other than a thread in the MDRawThreadList, this field should be set
|
||||||
* to 0 and the validity field must not contain
|
* 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;
|
u_int32_t requesting_thread_id;
|
||||||
} MDRawAirbagInfo;
|
} MDRawBreakpadInfo;
|
||||||
|
|
||||||
/* For (MDRawAirbagInfo).validity: */
|
/* For (MDRawBreakpadInfo).validity: */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
/* When set, the dump_thread_id field is valid. */
|
/* 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. */
|
/* When set, the requesting_thread_id field is valid. */
|
||||||
MD_AIRBAG_INFO_VALID_REQUESTING_THREAD_ID = 1 << 1
|
MD_BREAKPAD_INFO_VALID_REQUESTING_THREAD_ID = 1 << 1
|
||||||
} MDAirbagInfoValidity;
|
} MDBreakpadInfoValidity;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
/* expression, function, and file are 0-terminated UTF-16 strings. They
|
/* expression, function, and file are 0-terminated UTF-16 strings. They
|
||||||
|
@ -1060,4 +1060,4 @@ typedef enum {
|
||||||
#endif /* _MSC_VER */
|
#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
|
// BasicSourceLineResolver implements SourceLineResolverInterface, using
|
||||||
// address map files produced by a compatible writer, e.g. PDBSourceLineWriter.
|
// address map files produced by a compatible writer, e.g. PDBSourceLineWriter.
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__
|
#ifndef GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__
|
||||||
#define GOOGLE_AIRBAG_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__
|
#define GOOGLE_BREAKPAD_PROCESSOR_BASIC_SOURCE_LINE_RESOLVER_H__
|
||||||
|
|
||||||
#include <ext/hash_map>
|
#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 std::string;
|
||||||
using __gnu_cxx::hash_map;
|
using __gnu_cxx::hash_map;
|
||||||
|
@ -79,6 +79,6 @@ class BasicSourceLineResolver : public SourceLineResolverInterface {
|
||||||
void operator=(const BasicSourceLineResolver&);
|
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
|
// Author: Mark Mentovai
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_CALL_STACK_H__
|
#ifndef GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__
|
||||||
#define GOOGLE_AIRBAG_PROCESSOR_CALL_STACK_H__
|
#define GOOGLE_BREAKPAD_PROCESSOR_CALL_STACK_H__
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::vector;
|
using std::vector;
|
||||||
|
|
||||||
|
@ -72,6 +72,6 @@ class CallStack {
|
||||||
vector<StackFrame*> frames_;
|
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
|
// Author: Mark Mentovai
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_CODE_MODULE_H__
|
#ifndef GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULE_H__
|
||||||
#define GOOGLE_AIRBAG_PROCESSOR_CODE_MODULE_H__
|
#define GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULE_H__
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
|
|
||||||
|
@ -88,6 +88,6 @@ class CodeModule {
|
||||||
virtual const CodeModule* Copy() const = 0;
|
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
|
// Author: Mark Mentovai
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_CODE_MODULES_H__
|
#ifndef GOOGLE_BREAKPAD_PROCESSOR_CODE_MODULES_H__
|
||||||
#define GOOGLE_AIRBAG_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;
|
class CodeModule;
|
||||||
|
|
||||||
|
@ -93,6 +93,6 @@ class CodeModules {
|
||||||
virtual const CodeModules* Copy() const = 0;
|
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
|
// Author: Mark Mentovai
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_MEMORY_REGION_H__
|
#ifndef GOOGLE_BREAKPAD_PROCESSOR_MEMORY_REGION_H__
|
||||||
#define GOOGLE_AIRBAG_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 {
|
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
|
// Author: Mark Mentovai
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_MINIDUMP_H__
|
#ifndef GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_H__
|
||||||
#define GOOGLE_AIRBAG_PROCESSOR_MINIDUMP_H__
|
#define GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_H__
|
||||||
|
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "google_airbag/common/minidump_format.h"
|
#include "google_breakpad/common/minidump_format.h"
|
||||||
#include "google_airbag/processor/code_module.h"
|
#include "google_breakpad/processor/code_module.h"
|
||||||
#include "google_airbag/processor/code_modules.h"
|
#include "google_breakpad/processor/code_modules.h"
|
||||||
#include "google_airbag/processor/memory_region.h"
|
#include "google_breakpad/processor/memory_region.h"
|
||||||
|
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
|
|
||||||
using std::map;
|
using std::map;
|
||||||
|
@ -370,7 +370,7 @@ class MinidumpModule : public MinidumpObject,
|
||||||
// The CodeView record, which contains information to locate the module's
|
// The CodeView record, which contains information to locate the module's
|
||||||
// debugging information (pdb). This is returned as u_int8_t* because
|
// debugging information (pdb). This is returned as u_int8_t* because
|
||||||
// the data can be of types MDCVInfoPDB20* or MDCVInfoPDB70*, or it may be
|
// 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
|
// returned but no byte-swapping will have been performed. Check the
|
||||||
// record's signature in the first four bytes to differentiate between
|
// record's signature in the first four bytes to differentiate between
|
||||||
// the various types. Current toolchains generate modules which carry
|
// 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
|
// a minidump that provides additional information about the process state
|
||||||
// at the time the minidump was generated.
|
// at the time the minidump was generated.
|
||||||
class MinidumpAirbagInfo : public MinidumpStream {
|
class MinidumpBreakpadInfo : public MinidumpStream {
|
||||||
public:
|
public:
|
||||||
const MDRawAirbagInfo* airbag_info() const {
|
const MDRawBreakpadInfo* breakpad_info() const {
|
||||||
return valid_ ? &airbag_info_ : NULL;
|
return valid_ ? &breakpad_info_ : NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// These thread IDs are used to determine if threads deserve special
|
// These thread IDs are used to determine if threads deserve special
|
||||||
// treatment, so special getters are provided to retrieve this data from
|
// 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.
|
// IDs cannot be determined.
|
||||||
bool GetDumpThreadID(u_int32_t *thread_id) const;
|
bool GetDumpThreadID(u_int32_t *thread_id) const;
|
||||||
bool GetRequestingThreadID(u_int32_t *thread_id) const;
|
bool GetRequestingThreadID(u_int32_t *thread_id) const;
|
||||||
|
@ -671,13 +671,13 @@ class MinidumpAirbagInfo : public MinidumpStream {
|
||||||
private:
|
private:
|
||||||
friend class Minidump;
|
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_);
|
bool Read(u_int32_t expected_size_);
|
||||||
|
|
||||||
MDRawAirbagInfo airbag_info_;
|
MDRawBreakpadInfo breakpad_info_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -708,7 +708,7 @@ class Minidump {
|
||||||
MinidumpException* GetException();
|
MinidumpException* GetException();
|
||||||
MinidumpSystemInfo* GetSystemInfo();
|
MinidumpSystemInfo* GetSystemInfo();
|
||||||
MinidumpMiscInfo* GetMiscInfo();
|
MinidumpMiscInfo* GetMiscInfo();
|
||||||
MinidumpAirbagInfo* GetAirbagInfo();
|
MinidumpBreakpadInfo* GetBreakpadInfo();
|
||||||
|
|
||||||
// The next set of methods are provided for users who wish to access
|
// The next set of methods are provided for users who wish to access
|
||||||
// data in minidump files directly, while leveraging the rest of
|
// 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
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_MINIDUMP_PROCESSOR_H__
|
#ifndef GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_PROCESSOR_H__
|
||||||
#define GOOGLE_AIRBAG_PROCESSOR_MINIDUMP_PROCESSOR_H__
|
#define GOOGLE_BREAKPAD_PROCESSOR_MINIDUMP_PROCESSOR_H__
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
|
|
||||||
|
@ -86,6 +86,6 @@ class MinidumpProcessor {
|
||||||
SourceLineResolverInterface *resolver_;
|
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
|
// Author: Mark Mentovai
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_PROCESS_STATE_H__
|
#ifndef GOOGLE_BREAKPAD_PROCESSOR_PROCESS_STATE_H__
|
||||||
#define GOOGLE_AIRBAG_PROCESSOR_PROCESS_STATE_H__
|
#define GOOGLE_BREAKPAD_PROCESSOR_PROCESS_STATE_H__
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#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::string;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
|
@ -90,10 +90,10 @@ class ProcessState {
|
||||||
// The index of the thread that requested a dump be written in the
|
// 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
|
// 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
|
// 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.
|
// 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
|
// 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.
|
// indicating that the dump thread is not available.
|
||||||
int requesting_thread_;
|
int requesting_thread_;
|
||||||
|
|
||||||
|
@ -109,6 +109,6 @@ class ProcessState {
|
||||||
const CodeModules *modules_;
|
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.
|
// Abstract interface to return function/file/line info for a memory address.
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__
|
#ifndef GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__
|
||||||
#define GOOGLE_AIRBAG_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__
|
#define GOOGLE_BREAKPAD_PROCESSOR_SOURCE_LINE_RESOLVER_INTERFACE_H__
|
||||||
|
|
||||||
#include <string>
|
#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;
|
using std::string;
|
||||||
|
|
||||||
|
@ -74,6 +74,6 @@ class SourceLineResolverInterface {
|
||||||
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
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_STACK_FRAME_H__
|
#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_H__
|
||||||
#define GOOGLE_AIRBAG_PROCESSOR_STACK_FRAME_H__
|
#define GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_H__
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "google_airbag/common/airbag_types.h"
|
#include "google_breakpad/common/breakpad_types.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
class CodeModule;
|
class CodeModule;
|
||||||
|
|
||||||
|
@ -79,6 +79,6 @@ struct StackFrame {
|
||||||
u_int64_t source_line_base;
|
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
|
// Author: Mark Mentovai
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_STACK_FRAME_CPU_H__
|
#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_CPU_H__
|
||||||
#define GOOGLE_AIRBAG_PROCESSOR_STACK_FRAME_CPU_H__
|
#define GOOGLE_BREAKPAD_PROCESSOR_STACK_FRAME_CPU_H__
|
||||||
|
|
||||||
#include "google_airbag/common/minidump_format.h"
|
#include "google_breakpad/common/minidump_format.h"
|
||||||
#include "google_airbag/processor/stack_frame.h"
|
#include "google_breakpad/processor/stack_frame.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
struct StackFrameX86 : public StackFrame {
|
struct StackFrameX86 : public StackFrame {
|
||||||
// ContextValidity has one entry for each relevant hardware pointer register
|
// ContextValidity has one entry for each relevant hardware pointer register
|
||||||
|
@ -98,6 +98,6 @@ struct StackFramePPC : public StackFrame {
|
||||||
int context_validity;
|
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
|
// Author: Mark Mentovai
|
||||||
|
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_STACKWALKER_H__
|
#ifndef GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__
|
||||||
#define GOOGLE_AIRBAG_PROCESSOR_STACKWALKER_H__
|
#define GOOGLE_BREAKPAD_PROCESSOR_STACKWALKER_H__
|
||||||
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
class CallStack;
|
class CallStack;
|
||||||
class CodeModules;
|
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
|
// The caller may implement the SymbolSupplier abstract base class
|
||||||
// to provide symbols for a given module.
|
// to provide symbols for a given module.
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_SYMBOL_SUPPLIER_H__
|
#ifndef GOOGLE_BREAKPAD_PROCESSOR_SYMBOL_SUPPLIER_H__
|
||||||
#define GOOGLE_AIRBAG_PROCESSOR_SYMBOL_SUPPLIER_H__
|
#define GOOGLE_BREAKPAD_PROCESSOR_SYMBOL_SUPPLIER_H__
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
class CodeModule;
|
class CodeModule;
|
||||||
|
@ -67,6 +67,6 @@ class SymbolSupplier {
|
||||||
string *symbol_file) = 0;
|
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
|
// Author: Mark Mentovai
|
||||||
|
|
||||||
#ifndef GOOGLE_AIRBAG_PROCESSOR_SYSTEM_INFO_H__
|
#ifndef GOOGLE_BREAKPAD_PROCESSOR_SYSTEM_INFO_H__
|
||||||
#define GOOGLE_AIRBAG_PROCESSOR_SYSTEM_INFO_H__
|
#define GOOGLE_BREAKPAD_PROCESSOR_SYSTEM_INFO_H__
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
|
|
||||||
|
@ -84,6 +84,6 @@ struct SystemInfo {
|
||||||
string cpu_info;
|
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"
|
#include "processor/address_map.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
template<typename AddressType, typename EntryType>
|
template<typename AddressType, typename EntryType>
|
||||||
bool AddressMap<AddressType, EntryType>::Store(const AddressType &address,
|
bool AddressMap<AddressType, EntryType>::Store(const AddressType &address,
|
||||||
|
@ -81,6 +81,6 @@ void AddressMap<AddressType, EntryType>::Clear() {
|
||||||
map_.clear();
|
map_.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // PROCESSOR_ADDRESS_MAP_INL_H__
|
#endif // PROCESSOR_ADDRESS_MAP_INL_H__
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
|
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
template<typename AddressType, typename EntryType>
|
template<typename AddressType, typename EntryType>
|
||||||
class AddressMap {
|
class AddressMap {
|
||||||
|
@ -74,7 +74,7 @@ class AddressMap {
|
||||||
AddressToEntryMap map_;
|
AddressToEntryMap map_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // PROCESSOR_ADDRESS_MAP_H__
|
#endif // PROCESSOR_ADDRESS_MAP_H__
|
||||||
|
|
||||||
|
|
|
@ -49,8 +49,8 @@
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
using google_airbag::AddressMap;
|
using google_breakpad::AddressMap;
|
||||||
using google_airbag::linked_ptr;
|
using google_breakpad::linked_ptr;
|
||||||
|
|
||||||
// A CountedObject holds an int. A global (not thread safe!) count of
|
// A CountedObject holds an int. A global (not thread safe!) count of
|
||||||
// allocated CountedObjects is maintained to help test memory management.
|
// allocated CountedObjects is maintained to help test memory management.
|
||||||
|
|
|
@ -43,9 +43,9 @@
|
||||||
|
|
||||||
#include <string>
|
#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;
|
using std::string;
|
||||||
|
|
||||||
|
@ -90,6 +90,6 @@ class BasicCodeModule : public CodeModule {
|
||||||
void operator=(const BasicCodeModule &that);
|
void operator=(const BasicCodeModule &that);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // PROCESSOR_BASIC_CODE_MODULE_H__
|
#endif // PROCESSOR_BASIC_CODE_MODULE_H__
|
||||||
|
|
|
@ -37,11 +37,11 @@
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
#include "processor/basic_code_modules.h"
|
#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/linked_ptr.h"
|
||||||
#include "processor/range_map-inl.h"
|
#include "processor/range_map-inl.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
BasicCodeModules::BasicCodeModules(const CodeModules *that)
|
BasicCodeModules::BasicCodeModules(const CodeModules *that)
|
||||||
: main_address_(0),
|
: main_address_(0),
|
||||||
|
@ -109,4 +109,4 @@ const CodeModules* BasicCodeModules::Copy() const {
|
||||||
return new BasicCodeModules(this);
|
return new BasicCodeModules(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -41,9 +41,9 @@
|
||||||
#ifndef PROCESSOR_BASIC_CODE_MODULES_H__
|
#ifndef PROCESSOR_BASIC_CODE_MODULES_H__
|
||||||
#define 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 T> class linked_ptr;
|
||||||
template<typename AddressType, typename EntryType> class RangeMap;
|
template<typename AddressType, typename EntryType> class RangeMap;
|
||||||
|
@ -80,6 +80,6 @@ class BasicCodeModules : public CodeModules {
|
||||||
void operator=(const BasicCodeModules &that);
|
void operator=(const BasicCodeModules &that);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // PROCESSOR_BASIC_CODE_MODULES_H__
|
#endif // PROCESSOR_BASIC_CODE_MODULES_H__
|
||||||
|
|
|
@ -38,9 +38,9 @@
|
||||||
#include "processor/contained_range_map-inl.h"
|
#include "processor/contained_range_map-inl.h"
|
||||||
#include "processor/range_map-inl.h"
|
#include "processor/range_map-inl.h"
|
||||||
|
|
||||||
#include "google_airbag/processor/basic_source_line_resolver.h"
|
#include "google_breakpad/processor/basic_source_line_resolver.h"
|
||||||
#include "google_airbag/processor/code_module.h"
|
#include "google_breakpad/processor/code_module.h"
|
||||||
#include "google_airbag/processor/stack_frame.h"
|
#include "google_breakpad/processor/stack_frame.h"
|
||||||
#include "processor/linked_ptr.h"
|
#include "processor/linked_ptr.h"
|
||||||
#include "processor/scoped_ptr.h"
|
#include "processor/scoped_ptr.h"
|
||||||
#include "processor/stack_frame_info.h"
|
#include "processor/stack_frame_info.h"
|
||||||
|
@ -50,7 +50,7 @@ using std::vector;
|
||||||
using std::make_pair;
|
using std::make_pair;
|
||||||
using __gnu_cxx::hash;
|
using __gnu_cxx::hash;
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
struct BasicSourceLineResolver::Line {
|
struct BasicSourceLineResolver::Line {
|
||||||
Line(MemAddr addr, MemAddr code_size, int file_id, int source_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());
|
return hash<const char*>()(s.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -29,9 +29,9 @@
|
||||||
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "google_airbag/processor/basic_source_line_resolver.h"
|
#include "google_breakpad/processor/basic_source_line_resolver.h"
|
||||||
#include "google_airbag/processor/code_module.h"
|
#include "google_breakpad/processor/code_module.h"
|
||||||
#include "google_airbag/processor/stack_frame.h"
|
#include "google_breakpad/processor/stack_frame.h"
|
||||||
#include "processor/linked_ptr.h"
|
#include "processor/linked_ptr.h"
|
||||||
#include "processor/scoped_ptr.h"
|
#include "processor/scoped_ptr.h"
|
||||||
#include "processor/stack_frame_info.h"
|
#include "processor/stack_frame_info.h"
|
||||||
|
@ -49,12 +49,12 @@
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
using google_airbag::BasicSourceLineResolver;
|
using google_breakpad::BasicSourceLineResolver;
|
||||||
using google_airbag::CodeModule;
|
using google_breakpad::CodeModule;
|
||||||
using google_airbag::linked_ptr;
|
using google_breakpad::linked_ptr;
|
||||||
using google_airbag::scoped_ptr;
|
using google_breakpad::scoped_ptr;
|
||||||
using google_airbag::StackFrame;
|
using google_breakpad::StackFrame;
|
||||||
using google_airbag::StackFrameInfo;
|
using google_breakpad::StackFrameInfo;
|
||||||
|
|
||||||
class TestCodeModule : public CodeModule {
|
class TestCodeModule : public CodeModule {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -33,10 +33,10 @@
|
||||||
//
|
//
|
||||||
// Author: Mark Mentovai
|
// Author: Mark Mentovai
|
||||||
|
|
||||||
#include "google_airbag/processor/call_stack.h"
|
#include "google_breakpad/processor/call_stack.h"
|
||||||
#include "google_airbag/processor/stack_frame.h"
|
#include "google_breakpad/processor/stack_frame.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
CallStack::~CallStack() {
|
CallStack::~CallStack() {
|
||||||
Clear();
|
Clear();
|
||||||
|
@ -50,4 +50,4 @@ void CallStack::Clear() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
#include "processor/contained_range_map.h"
|
#include "processor/contained_range_map.h"
|
||||||
|
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
|
|
||||||
template<typename AddressType, typename EntryType>
|
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__
|
#endif // PROCESSOR_CONTAINED_RANGE_MAP_INL_H__
|
||||||
|
|
|
@ -64,7 +64,7 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
|
|
||||||
template<typename AddressType, typename EntryType>
|
template<typename AddressType, typename EntryType>
|
||||||
|
@ -140,7 +140,7 @@ class ContainedRangeMap {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
|
|
||||||
#endif // PROCESSOR_CONTAINED_RANGE_MAP_H__
|
#endif // PROCESSOR_CONTAINED_RANGE_MAP_H__
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
|
||||||
using google_airbag::ContainedRangeMap;
|
using google_breakpad::ContainedRangeMap;
|
||||||
|
|
||||||
|
|
||||||
static bool RunTests() {
|
static bool RunTests() {
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
#ifndef PROCESSOR_LINKED_PTR_H__
|
#ifndef PROCESSOR_LINKED_PTR_H__
|
||||||
#define 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
|
// 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
|
// 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);
|
return linked_ptr<T>(ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // PROCESSOR_LINKED_PTR_H__
|
#endif // PROCESSOR_LINKED_PTR_H__
|
||||||
|
|
|
@ -54,13 +54,13 @@ typedef SSIZE_T ssize_t;
|
||||||
|
|
||||||
#include "processor/range_map-inl.h"
|
#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_module.h"
|
||||||
#include "processor/basic_code_modules.h"
|
#include "processor/basic_code_modules.h"
|
||||||
#include "processor/scoped_ptr.h"
|
#include "processor/scoped_ptr.h"
|
||||||
|
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
|
|
||||||
using std::vector;
|
using std::vector;
|
||||||
|
@ -1280,7 +1280,7 @@ string MinidumpModule::debug_identifier() const {
|
||||||
// miscellaneous debug record. It only carries a filename, though, and no
|
// 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
|
// 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
|
// 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.
|
// a CodeView record). Treat it as an error (empty identifier) for now.
|
||||||
|
|
||||||
// TODO(mmentovai): on the Mac, provide fallbacks as in code_identifier().
|
// 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
|
// 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,
|
// the wild contain such CodeView records as MD_CVINFOCV50_SIGNATURE,
|
||||||
// don't bail out here - allow the data to be returned to the user,
|
// don't bail out here - allow the data to be returned to the user,
|
||||||
// although byte-swapping can't be done.
|
// 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),
|
: MinidumpStream(minidump),
|
||||||
airbag_info_() {
|
breakpad_info_() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool MinidumpAirbagInfo::Read(u_int32_t expected_size) {
|
bool MinidumpBreakpadInfo::Read(u_int32_t expected_size) {
|
||||||
valid_ = false;
|
valid_ = false;
|
||||||
|
|
||||||
if (expected_size != sizeof(airbag_info_))
|
if (expected_size != sizeof(breakpad_info_))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!minidump_->ReadBytes(&airbag_info_, sizeof(airbag_info_)))
|
if (!minidump_->ReadBytes(&breakpad_info_, sizeof(breakpad_info_)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (minidump_->swap()) {
|
if (minidump_->swap()) {
|
||||||
Swap(&airbag_info_.validity);
|
Swap(&breakpad_info_.validity);
|
||||||
Swap(&airbag_info_.dump_thread_id);
|
Swap(&breakpad_info_.dump_thread_id);
|
||||||
Swap(&airbag_info_.requesting_thread_id);
|
Swap(&breakpad_info_.requesting_thread_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
valid_ = true;
|
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_ ||
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
*thread_id = airbag_info_.dump_thread_id;
|
*thread_id = breakpad_info_.dump_thread_id;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool MinidumpAirbagInfo::GetRequestingThreadID(u_int32_t *thread_id)
|
bool MinidumpBreakpadInfo::GetRequestingThreadID(u_int32_t *thread_id)
|
||||||
const {
|
const {
|
||||||
if (!thread_id || !valid_ ||
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
*thread_id = airbag_info_.requesting_thread_id;
|
*thread_id = breakpad_info_.requesting_thread_id;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void MinidumpAirbagInfo::Print() {
|
void MinidumpBreakpadInfo::Print() {
|
||||||
if (!valid_)
|
if (!valid_)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
printf("MDRawAirbagInfo\n");
|
printf("MDRawBreakpadInfo\n");
|
||||||
printf(" validity = 0x%x\n", airbag_info_.validity);
|
printf(" validity = 0x%x\n", breakpad_info_.validity);
|
||||||
|
|
||||||
if (airbag_info_.validity & MD_AIRBAG_INFO_VALID_DUMP_THREAD_ID) {
|
if (breakpad_info_.validity & MD_BREAKPAD_INFO_VALID_DUMP_THREAD_ID) {
|
||||||
printf(" dump_thread_id = 0x%x\n", airbag_info_.dump_thread_id);
|
printf(" dump_thread_id = 0x%x\n", breakpad_info_.dump_thread_id);
|
||||||
} else {
|
} else {
|
||||||
printf(" dump_thread_id = (invalid)\n");
|
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",
|
printf(" requesting_thread_id = 0x%x\n",
|
||||||
airbag_info_.requesting_thread_id);
|
breakpad_info_.requesting_thread_id);
|
||||||
} else {
|
} else {
|
||||||
printf(" requesting_thread_id = (invalid)\n");
|
printf(" requesting_thread_id = (invalid)\n");
|
||||||
}
|
}
|
||||||
|
@ -2523,7 +2523,7 @@ bool Minidump::Read() {
|
||||||
case MD_EXCEPTION_STREAM:
|
case MD_EXCEPTION_STREAM:
|
||||||
case MD_SYSTEM_INFO_STREAM:
|
case MD_SYSTEM_INFO_STREAM:
|
||||||
case MD_MISC_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()) {
|
if (stream_map_->find(stream_type) != stream_map_->end()) {
|
||||||
// Another stream with this type was already found. A minidump
|
// Another stream with this type was already found. A minidump
|
||||||
// file should contain at most one of each of these stream types.
|
// file should contain at most one of each of these stream types.
|
||||||
|
@ -2584,9 +2584,9 @@ MinidumpMiscInfo* Minidump::GetMiscInfo() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
MinidumpAirbagInfo* Minidump::GetAirbagInfo() {
|
MinidumpBreakpadInfo* Minidump::GetBreakpadInfo() {
|
||||||
MinidumpAirbagInfo* airbag_info;
|
MinidumpBreakpadInfo* breakpad_info;
|
||||||
return GetStream(&airbag_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 <cstdio>
|
||||||
|
|
||||||
#include "google_airbag/processor/minidump.h"
|
#include "google_breakpad/processor/minidump.h"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
using google_airbag::Minidump;
|
using google_breakpad::Minidump;
|
||||||
using google_airbag::MinidumpThreadList;
|
using google_breakpad::MinidumpThreadList;
|
||||||
using google_airbag::MinidumpModuleList;
|
using google_breakpad::MinidumpModuleList;
|
||||||
using google_airbag::MinidumpMemoryList;
|
using google_breakpad::MinidumpMemoryList;
|
||||||
using google_airbag::MinidumpException;
|
using google_breakpad::MinidumpException;
|
||||||
using google_airbag::MinidumpSystemInfo;
|
using google_breakpad::MinidumpSystemInfo;
|
||||||
using google_airbag::MinidumpMiscInfo;
|
using google_breakpad::MinidumpMiscInfo;
|
||||||
using google_airbag::MinidumpAirbagInfo;
|
using google_breakpad::MinidumpBreakpadInfo;
|
||||||
|
|
||||||
static bool PrintMinidumpDump(const char *minidump_file) {
|
static bool PrintMinidumpDump(const char *minidump_file) {
|
||||||
Minidump minidump(minidump_file);
|
Minidump minidump(minidump_file);
|
||||||
|
@ -105,12 +105,12 @@ static bool PrintMinidumpDump(const char *minidump_file) {
|
||||||
misc_info->Print();
|
misc_info->Print();
|
||||||
}
|
}
|
||||||
|
|
||||||
MinidumpAirbagInfo *airbag_info = minidump.GetAirbagInfo();
|
MinidumpBreakpadInfo *breakpad_info = minidump.GetBreakpadInfo();
|
||||||
if (!airbag_info) {
|
if (!breakpad_info) {
|
||||||
// Airbag info is optional, so don't treat this as an error.
|
// Breakpad info is optional, so don't treat this as an error.
|
||||||
printf("minidump.GetAirbagInfo() failed\n");
|
printf("minidump.GetBreakpadInfo() failed\n");
|
||||||
} else {
|
} else {
|
||||||
airbag_info->Print();
|
breakpad_info->Print();
|
||||||
}
|
}
|
||||||
|
|
||||||
return errors == 0;
|
return errors == 0;
|
||||||
|
|
|
@ -29,14 +29,14 @@
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
#include "google_airbag/processor/minidump_processor.h"
|
#include "google_breakpad/processor/minidump_processor.h"
|
||||||
#include "google_airbag/processor/call_stack.h"
|
#include "google_breakpad/processor/call_stack.h"
|
||||||
#include "google_airbag/processor/minidump.h"
|
#include "google_breakpad/processor/minidump.h"
|
||||||
#include "google_airbag/processor/process_state.h"
|
#include "google_breakpad/processor/process_state.h"
|
||||||
#include "processor/scoped_ptr.h"
|
#include "processor/scoped_ptr.h"
|
||||||
#include "processor/stackwalker_x86.h"
|
#include "processor/stackwalker_x86.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier,
|
MinidumpProcessor::MinidumpProcessor(SymbolSupplier *supplier,
|
||||||
SourceLineResolverInterface *resolver)
|
SourceLineResolverInterface *resolver)
|
||||||
|
@ -67,11 +67,11 @@ MinidumpProcessor::ProcessResult MinidumpProcessor::Process(
|
||||||
u_int32_t requesting_thread_id = 0;
|
u_int32_t requesting_thread_id = 0;
|
||||||
bool has_requesting_thread = false;
|
bool has_requesting_thread = false;
|
||||||
|
|
||||||
MinidumpAirbagInfo *airbag_info = dump.GetAirbagInfo();
|
MinidumpBreakpadInfo *breakpad_info = dump.GetBreakpadInfo();
|
||||||
if (airbag_info) {
|
if (breakpad_info) {
|
||||||
has_dump_thread = airbag_info->GetDumpThreadID(&dump_thread_id);
|
has_dump_thread = breakpad_info->GetDumpThreadID(&dump_thread_id);
|
||||||
has_requesting_thread =
|
has_requesting_thread =
|
||||||
airbag_info->GetRequestingThreadID(&requesting_thread_id);
|
breakpad_info->GetRequestingThreadID(&requesting_thread_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
MinidumpException *exception = dump.GetException();
|
MinidumpException *exception = dump.GetException();
|
||||||
|
@ -675,4 +675,4 @@ string MinidumpProcessor::GetCrashReason(Minidump *dump, u_int64_t *address) {
|
||||||
return reason;
|
return reason;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -32,27 +32,27 @@
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include "google_airbag/processor/basic_source_line_resolver.h"
|
#include "google_breakpad/processor/basic_source_line_resolver.h"
|
||||||
#include "google_airbag/processor/call_stack.h"
|
#include "google_breakpad/processor/call_stack.h"
|
||||||
#include "google_airbag/processor/code_module.h"
|
#include "google_breakpad/processor/code_module.h"
|
||||||
#include "google_airbag/processor/code_modules.h"
|
#include "google_breakpad/processor/code_modules.h"
|
||||||
#include "google_airbag/processor/minidump_processor.h"
|
#include "google_breakpad/processor/minidump_processor.h"
|
||||||
#include "google_airbag/processor/process_state.h"
|
#include "google_breakpad/processor/process_state.h"
|
||||||
#include "google_airbag/processor/stack_frame.h"
|
#include "google_breakpad/processor/stack_frame.h"
|
||||||
#include "google_airbag/processor/symbol_supplier.h"
|
#include "google_breakpad/processor/symbol_supplier.h"
|
||||||
#include "processor/scoped_ptr.h"
|
#include "processor/scoped_ptr.h"
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
using google_airbag::BasicSourceLineResolver;
|
using google_breakpad::BasicSourceLineResolver;
|
||||||
using google_airbag::CallStack;
|
using google_breakpad::CallStack;
|
||||||
using google_airbag::CodeModule;
|
using google_breakpad::CodeModule;
|
||||||
using google_airbag::MinidumpProcessor;
|
using google_breakpad::MinidumpProcessor;
|
||||||
using google_airbag::ProcessState;
|
using google_breakpad::ProcessState;
|
||||||
using google_airbag::scoped_ptr;
|
using google_breakpad::scoped_ptr;
|
||||||
using google_airbag::SymbolSupplier;
|
using google_breakpad::SymbolSupplier;
|
||||||
using google_airbag::SystemInfo;
|
using google_breakpad::SystemInfo;
|
||||||
|
|
||||||
static const char *kSystemInfoOS = "Windows NT";
|
static const char *kSystemInfoOS = "Windows NT";
|
||||||
static const char *kSystemInfoOSShort = "windows";
|
static const char *kSystemInfoOSShort = "windows";
|
||||||
|
@ -111,7 +111,7 @@ SymbolSupplier::SymbolResult TestSymbolSupplier::GetSymbolFile(
|
||||||
return INTERRUPT;
|
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") : ".") +
|
*symbol_file = string(getenv("srcdir") ? getenv("srcdir") : ".") +
|
||||||
"/src/processor/testdata/symbols/test_app.pdb/" +
|
"/src/processor/testdata/symbols/test_app.pdb/" +
|
||||||
module->debug_identifier() +
|
module->debug_identifier() +
|
||||||
|
@ -150,27 +150,27 @@ static bool RunTests() {
|
||||||
|
|
||||||
ASSERT_TRUE(stack->frames()->at(0)->module);
|
ASSERT_TRUE(stack->frames()->at(0)->module);
|
||||||
ASSERT_EQ(stack->frames()->at(0)->module->base_address(), 0x400000);
|
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,
|
ASSERT_EQ(stack->frames()->at(0)->function_name,
|
||||||
"`anonymous namespace'::CrashFunction");
|
"`anonymous namespace'::CrashFunction");
|
||||||
ASSERT_EQ(stack->frames()->at(0)->source_file_name, "c:\\test_app.cc");
|
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_TRUE(stack->frames()->at(1)->module);
|
||||||
ASSERT_EQ(stack->frames()->at(1)->module->base_address(), 0x400000);
|
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)->function_name, "main");
|
||||||
ASSERT_EQ(stack->frames()->at(1)->source_file_name, "c:\\test_app.cc");
|
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
|
// This comes from the CRT
|
||||||
ASSERT_TRUE(stack->frames()->at(2)->module);
|
ASSERT_TRUE(stack->frames()->at(2)->module);
|
||||||
ASSERT_EQ(stack->frames()->at(2)->module->base_address(), 0x400000);
|
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)->function_name, "__tmainCRTStartup");
|
||||||
ASSERT_EQ(stack->frames()->at(2)->source_file_name,
|
ASSERT_EQ(stack->frames()->at(2)->source_file_name,
|
||||||
"f:\\rtm\\vctools\\crt_bld\\self_x86\\crt\\src\\crt0.c");
|
"f:\\sp\\vctools\\crt_bld\\self_x86\\crt\\src\\crt0.c");
|
||||||
ASSERT_EQ(stack->frames()->at(2)->source_line, 318);
|
ASSERT_EQ(stack->frames()->at(2)->source_line, 327);
|
||||||
|
|
||||||
// No debug info available for kernel32.dll
|
// No debug info available for kernel32.dll
|
||||||
ASSERT_TRUE(stack->frames()->at(3)->module);
|
ASSERT_TRUE(stack->frames()->at(3)->module);
|
||||||
|
@ -183,7 +183,7 @@ static bool RunTests() {
|
||||||
|
|
||||||
ASSERT_EQ(state.modules()->module_count(), 13);
|
ASSERT_EQ(state.modules()->module_count(), 13);
|
||||||
ASSERT_TRUE(state.modules()->GetMainModule());
|
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_FALSE(state.modules()->GetModuleForAddress(0));
|
||||||
ASSERT_EQ(state.modules()->GetMainModule(),
|
ASSERT_EQ(state.modules()->GetMainModule(),
|
||||||
state.modules()->GetModuleForAddress(0x400000));
|
state.modules()->GetModuleForAddress(0x400000));
|
||||||
|
|
|
@ -37,14 +37,14 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#include "google_airbag/processor/basic_source_line_resolver.h"
|
#include "google_breakpad/processor/basic_source_line_resolver.h"
|
||||||
#include "google_airbag/processor/call_stack.h"
|
#include "google_breakpad/processor/call_stack.h"
|
||||||
#include "google_airbag/processor/code_module.h"
|
#include "google_breakpad/processor/code_module.h"
|
||||||
#include "google_airbag/processor/code_modules.h"
|
#include "google_breakpad/processor/code_modules.h"
|
||||||
#include "google_airbag/processor/minidump.h"
|
#include "google_breakpad/processor/minidump.h"
|
||||||
#include "google_airbag/processor/minidump_processor.h"
|
#include "google_breakpad/processor/minidump_processor.h"
|
||||||
#include "google_airbag/processor/process_state.h"
|
#include "google_breakpad/processor/process_state.h"
|
||||||
#include "google_airbag/processor/stack_frame_cpu.h"
|
#include "google_breakpad/processor/stack_frame_cpu.h"
|
||||||
#include "processor/pathname_stripper.h"
|
#include "processor/pathname_stripper.h"
|
||||||
#include "processor/scoped_ptr.h"
|
#include "processor/scoped_ptr.h"
|
||||||
#include "processor/simple_symbol_supplier.h"
|
#include "processor/simple_symbol_supplier.h"
|
||||||
|
@ -53,19 +53,19 @@ namespace {
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
using google_airbag::BasicSourceLineResolver;
|
using google_breakpad::BasicSourceLineResolver;
|
||||||
using google_airbag::CallStack;
|
using google_breakpad::CallStack;
|
||||||
using google_airbag::CodeModule;
|
using google_breakpad::CodeModule;
|
||||||
using google_airbag::CodeModules;
|
using google_breakpad::CodeModules;
|
||||||
using google_airbag::MinidumpModule;
|
using google_breakpad::MinidumpModule;
|
||||||
using google_airbag::MinidumpProcessor;
|
using google_breakpad::MinidumpProcessor;
|
||||||
using google_airbag::PathnameStripper;
|
using google_breakpad::PathnameStripper;
|
||||||
using google_airbag::ProcessState;
|
using google_breakpad::ProcessState;
|
||||||
using google_airbag::scoped_ptr;
|
using google_breakpad::scoped_ptr;
|
||||||
using google_airbag::SimpleSymbolSupplier;
|
using google_breakpad::SimpleSymbolSupplier;
|
||||||
using google_airbag::StackFrame;
|
using google_breakpad::StackFrame;
|
||||||
using google_airbag::StackFramePPC;
|
using google_breakpad::StackFramePPC;
|
||||||
using google_airbag::StackFrameX86;
|
using google_breakpad::StackFrameX86;
|
||||||
|
|
||||||
// Separator character for machine readable output.
|
// Separator character for machine readable output.
|
||||||
static const char kOutputSeparator = '|';
|
static const char kOutputSeparator = '|';
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
|
|
||||||
#include "processor/pathname_stripper.h"
|
#include "processor/pathname_stripper.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
// static
|
// static
|
||||||
string PathnameStripper::File(const string &path) {
|
string PathnameStripper::File(const string &path) {
|
||||||
|
@ -53,4 +53,4 @@ string PathnameStripper::File(const string &path) {
|
||||||
return path.substr(file_start);
|
return path.substr(file_start);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::string;
|
using std::string;
|
||||||
|
|
||||||
|
@ -48,6 +48,6 @@ class PathnameStripper {
|
||||||
static string File(const string &path);
|
static string File(const string &path);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // PROCESSOR_PATHNAME_STRIPPER_H__
|
#endif // PROCESSOR_PATHNAME_STRIPPER_H__
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
using google_airbag::PathnameStripper;
|
using google_breakpad::PathnameStripper;
|
||||||
|
|
||||||
static bool RunTests() {
|
static bool RunTests() {
|
||||||
ASSERT_EQ(PathnameStripper::File("/dir/file"), "file");
|
ASSERT_EQ(PathnameStripper::File("/dir/file"), "file");
|
||||||
|
|
|
@ -26,9 +26,9 @@
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
#include "processor/postfix_evaluator.h"
|
#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::istringstream;
|
||||||
using std::ostringstream;
|
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__
|
#endif // PROCESSOR_POSTFIX_EVALUATOR_INL_H__
|
||||||
|
|
|
@ -55,7 +55,7 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
using std::map;
|
using std::map;
|
||||||
using std::string;
|
using std::string;
|
||||||
|
@ -137,7 +137,7 @@ class PostfixEvaluator {
|
||||||
vector<string> stack_;
|
vector<string> stack_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
|
|
||||||
#endif // PROCESSOR_POSTFIX_EVALUATOR_H__
|
#endif // PROCESSOR_POSTFIX_EVALUATOR_H__
|
||||||
|
|
|
@ -37,8 +37,8 @@
|
||||||
|
|
||||||
#include "processor/postfix_evaluator-inl.h"
|
#include "processor/postfix_evaluator-inl.h"
|
||||||
|
|
||||||
#include "google_airbag/common/airbag_types.h"
|
#include "google_breakpad/common/breakpad_types.h"
|
||||||
#include "google_airbag/processor/memory_region.h"
|
#include "google_breakpad/processor/memory_region.h"
|
||||||
|
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
@ -46,8 +46,8 @@ namespace {
|
||||||
|
|
||||||
using std::map;
|
using std::map;
|
||||||
using std::string;
|
using std::string;
|
||||||
using google_airbag::MemoryRegion;
|
using google_breakpad::MemoryRegion;
|
||||||
using google_airbag::PostfixEvaluator;
|
using google_breakpad::PostfixEvaluator;
|
||||||
|
|
||||||
|
|
||||||
// FakeMemoryRegion is used to test PostfixEvaluator's dereference (^)
|
// FakeMemoryRegion is used to test PostfixEvaluator's dereference (^)
|
||||||
|
|
|
@ -33,11 +33,11 @@
|
||||||
//
|
//
|
||||||
// Author: Mark Mentovai
|
// Author: Mark Mentovai
|
||||||
|
|
||||||
#include "google_airbag/processor/process_state.h"
|
#include "google_breakpad/processor/process_state.h"
|
||||||
#include "google_airbag/processor/call_stack.h"
|
#include "google_breakpad/processor/call_stack.h"
|
||||||
#include "google_airbag/processor/code_modules.h"
|
#include "google_breakpad/processor/code_modules.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
ProcessState::~ProcessState() {
|
ProcessState::~ProcessState() {
|
||||||
Clear();
|
Clear();
|
||||||
|
@ -60,4 +60,4 @@ void ProcessState::Clear() {
|
||||||
modules_ = NULL;
|
modules_ = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
#include "processor/range_map.h"
|
#include "processor/range_map.h"
|
||||||
|
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
|
|
||||||
template<typename AddressType, typename EntryType>
|
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__
|
#endif // PROCESSOR_RANGE_MAP_INL_H__
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
|
|
||||||
template<typename AddressType, typename EntryType>
|
template<typename AddressType, typename EntryType>
|
||||||
|
@ -121,7 +121,7 @@ class RangeMap {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
|
|
||||||
#endif // PROCESSOR_RANGE_MAP_H__
|
#endif // PROCESSOR_RANGE_MAP_H__
|
||||||
|
|
|
@ -44,9 +44,9 @@
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
|
||||||
using google_airbag::linked_ptr;
|
using google_breakpad::linked_ptr;
|
||||||
using google_airbag::scoped_ptr;
|
using google_breakpad::scoped_ptr;
|
||||||
using google_airbag::RangeMap;
|
using google_breakpad::RangeMap;
|
||||||
|
|
||||||
|
|
||||||
// A CountedObject holds an int. A global (not thread safe!) count of
|
// A CountedObject holds an int. A global (not thread safe!) count of
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
#include <assert.h> // for assert
|
#include <assert.h> // for assert
|
||||||
#include <stdlib.h> // for free() decl
|
#include <stdlib.h> // for free() decl
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
class scoped_ptr {
|
class scoped_ptr {
|
||||||
|
@ -330,6 +330,6 @@ bool operator!=(T* p, const scoped_ptr_malloc<T,FP>& b) {
|
||||||
return p != b.get();
|
return p != b.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // PROCESSOR_SCOPED_PTR_H__
|
#endif // PROCESSOR_SCOPED_PTR_H__
|
||||||
|
|
|
@ -39,11 +39,11 @@
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
#include "processor/simple_symbol_supplier.h"
|
#include "processor/simple_symbol_supplier.h"
|
||||||
#include "google_airbag/processor/code_module.h"
|
#include "google_breakpad/processor/code_module.h"
|
||||||
#include "google_airbag/processor/system_info.h"
|
#include "google_breakpad/processor/system_info.h"
|
||||||
#include "processor/pathname_stripper.h"
|
#include "processor/pathname_stripper.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
static bool file_exists(const string &file_name) {
|
static bool file_exists(const string &file_name) {
|
||||||
struct stat sb;
|
struct stat sb;
|
||||||
|
@ -110,4 +110,4 @@ SymbolSupplier::SymbolResult SimpleSymbolSupplier::GetSymbolFileAtPath(
|
||||||
return FOUND;
|
return FOUND;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -79,9 +79,9 @@
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#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::string;
|
||||||
using std::vector;
|
using std::vector;
|
||||||
|
@ -116,6 +116,6 @@ class SimpleSymbolSupplier : public SymbolSupplier {
|
||||||
vector<string> paths_;
|
vector<string> paths_;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
#endif // PROCESSOR_SIMPLE_SYMBOL_SUPPLIER_H__
|
#endif // PROCESSOR_SIMPLE_SYMBOL_SUPPLIER_H__
|
||||||
|
|
|
@ -40,9 +40,9 @@
|
||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "google_airbag/common/airbag_types.h"
|
#include "google_breakpad/common/breakpad_types.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
struct StackFrameInfo {
|
struct StackFrameInfo {
|
||||||
public:
|
public:
|
||||||
|
@ -120,7 +120,7 @@ struct StackFrameInfo {
|
||||||
std::string program_string;
|
std::string program_string;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
|
|
||||||
#endif // PROCESSOR_STACK_FRAME_INFO_H__
|
#endif // PROCESSOR_STACK_FRAME_INFO_H__
|
||||||
|
|
|
@ -36,21 +36,21 @@
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
|
||||||
#include "google_airbag/processor/stackwalker.h"
|
#include "google_breakpad/processor/stackwalker.h"
|
||||||
#include "google_airbag/processor/call_stack.h"
|
#include "google_breakpad/processor/call_stack.h"
|
||||||
#include "google_airbag/processor/code_module.h"
|
#include "google_breakpad/processor/code_module.h"
|
||||||
#include "google_airbag/processor/code_modules.h"
|
#include "google_breakpad/processor/code_modules.h"
|
||||||
#include "google_airbag/processor/minidump.h"
|
#include "google_breakpad/processor/minidump.h"
|
||||||
#include "google_airbag/processor/source_line_resolver_interface.h"
|
#include "google_breakpad/processor/source_line_resolver_interface.h"
|
||||||
#include "google_airbag/processor/stack_frame.h"
|
#include "google_breakpad/processor/stack_frame.h"
|
||||||
#include "google_airbag/processor/symbol_supplier.h"
|
#include "google_breakpad/processor/symbol_supplier.h"
|
||||||
#include "processor/linked_ptr.h"
|
#include "processor/linked_ptr.h"
|
||||||
#include "processor/scoped_ptr.h"
|
#include "processor/scoped_ptr.h"
|
||||||
#include "processor/stack_frame_info.h"
|
#include "processor/stack_frame_info.h"
|
||||||
#include "processor/stackwalker_ppc.h"
|
#include "processor/stackwalker_ppc.h"
|
||||||
#include "processor/stackwalker_x86.h"
|
#include "processor/stackwalker_x86.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
|
|
||||||
Stackwalker::Stackwalker(const SystemInfo *system_info,
|
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 "processor/stackwalker_ppc.h"
|
||||||
#include "google_airbag/processor/call_stack.h"
|
#include "google_breakpad/processor/call_stack.h"
|
||||||
#include "google_airbag/processor/memory_region.h"
|
#include "google_breakpad/processor/memory_region.h"
|
||||||
#include "google_airbag/processor/stack_frame_cpu.h"
|
#include "google_breakpad/processor/stack_frame_cpu.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
|
|
||||||
StackwalkerPPC::StackwalkerPPC(const SystemInfo *system_info,
|
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__
|
#define PROCESSOR_STACKWALKER_PPC_H__
|
||||||
|
|
||||||
|
|
||||||
#include "google_airbag/common/airbag_types.h"
|
#include "google_breakpad/common/breakpad_types.h"
|
||||||
#include "google_airbag/common/minidump_format.h"
|
#include "google_breakpad/common/minidump_format.h"
|
||||||
#include "google_airbag/processor/stackwalker.h"
|
#include "google_breakpad/processor/stackwalker.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
class CodeModules;
|
class CodeModules;
|
||||||
|
|
||||||
|
@ -75,7 +75,7 @@ class StackwalkerPPC : public Stackwalker {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
|
|
||||||
#endif // PROCESSOR_STACKWALKER_PPC_H__
|
#endif // PROCESSOR_STACKWALKER_PPC_H__
|
||||||
|
|
|
@ -54,29 +54,29 @@
|
||||||
|
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
|
||||||
#include "google_airbag/common/airbag_types.h"
|
#include "google_breakpad/common/breakpad_types.h"
|
||||||
#include "google_airbag/common/minidump_format.h"
|
#include "google_breakpad/common/minidump_format.h"
|
||||||
#include "google_airbag/processor/basic_source_line_resolver.h"
|
#include "google_breakpad/processor/basic_source_line_resolver.h"
|
||||||
#include "google_airbag/processor/call_stack.h"
|
#include "google_breakpad/processor/call_stack.h"
|
||||||
#include "google_airbag/processor/memory_region.h"
|
#include "google_breakpad/processor/memory_region.h"
|
||||||
#include "google_airbag/processor/stack_frame.h"
|
#include "google_breakpad/processor/stack_frame.h"
|
||||||
#include "google_airbag/processor/stack_frame_cpu.h"
|
#include "google_breakpad/processor/stack_frame_cpu.h"
|
||||||
#include "processor/scoped_ptr.h"
|
#include "processor/scoped_ptr.h"
|
||||||
|
|
||||||
using google_airbag::BasicSourceLineResolver;
|
using google_breakpad::BasicSourceLineResolver;
|
||||||
using google_airbag::CallStack;
|
using google_breakpad::CallStack;
|
||||||
using google_airbag::MemoryRegion;
|
using google_breakpad::MemoryRegion;
|
||||||
using google_airbag::scoped_ptr;
|
using google_breakpad::scoped_ptr;
|
||||||
using google_airbag::StackFrame;
|
using google_breakpad::StackFrame;
|
||||||
using google_airbag::StackFramePPC;
|
using google_breakpad::StackFramePPC;
|
||||||
using google_airbag::StackFrameX86;
|
using google_breakpad::StackFrameX86;
|
||||||
|
|
||||||
#if defined(__i386__)
|
#if defined(__i386__)
|
||||||
#include "processor/stackwalker_x86.h"
|
#include "processor/stackwalker_x86.h"
|
||||||
using google_airbag::StackwalkerX86;
|
using google_breakpad::StackwalkerX86;
|
||||||
#elif defined(__ppc__)
|
#elif defined(__ppc__)
|
||||||
#include "processor/stackwalker_ppc.h"
|
#include "processor/stackwalker_ppc.h"
|
||||||
using google_airbag::StackwalkerPPC;
|
using google_breakpad::StackwalkerPPC;
|
||||||
#endif // __i386__ || __ppc__
|
#endif // __i386__ || __ppc__
|
||||||
|
|
||||||
#define RECURSION_DEPTH 100
|
#define RECURSION_DEPTH 100
|
||||||
|
|
|
@ -37,13 +37,13 @@
|
||||||
#include "processor/postfix_evaluator-inl.h"
|
#include "processor/postfix_evaluator-inl.h"
|
||||||
|
|
||||||
#include "processor/stackwalker_x86.h"
|
#include "processor/stackwalker_x86.h"
|
||||||
#include "google_airbag/processor/call_stack.h"
|
#include "google_breakpad/processor/call_stack.h"
|
||||||
#include "google_airbag/processor/memory_region.h"
|
#include "google_breakpad/processor/memory_region.h"
|
||||||
#include "google_airbag/processor/stack_frame_cpu.h"
|
#include "google_breakpad/processor/stack_frame_cpu.h"
|
||||||
#include "processor/linked_ptr.h"
|
#include "processor/linked_ptr.h"
|
||||||
#include "processor/stack_frame_info.h"
|
#include "processor/stack_frame_info.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
|
|
||||||
StackwalkerX86::StackwalkerX86(const SystemInfo *system_info,
|
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
|
// 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
|
// 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
|
// the PostfixEvaluator engine when certain types of debugging information
|
||||||
// are present without having to write the constants into the program string
|
// are present without having to write the constants into the program string
|
||||||
// as literals.
|
// as literals.
|
||||||
|
@ -312,4 +312,4 @@ StackFrame* StackwalkerX86::GetCallerFrame(
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
|
@ -39,11 +39,11 @@
|
||||||
#define PROCESSOR_STACKWALKER_X86_H__
|
#define PROCESSOR_STACKWALKER_X86_H__
|
||||||
|
|
||||||
|
|
||||||
#include "google_airbag/common/airbag_types.h"
|
#include "google_breakpad/common/breakpad_types.h"
|
||||||
#include "google_airbag/common/minidump_format.h"
|
#include "google_breakpad/common/minidump_format.h"
|
||||||
#include "google_airbag/processor/stackwalker.h"
|
#include "google_breakpad/processor/stackwalker.h"
|
||||||
|
|
||||||
namespace google_airbag {
|
namespace google_breakpad {
|
||||||
|
|
||||||
class CodeModules;
|
class CodeModules;
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ class StackwalkerX86 : public Stackwalker {
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
} // namespace google_airbag
|
} // namespace google_breakpad
|
||||||
|
|
||||||
|
|
||||||
#endif // PROCESSOR_STACKWALKER_X86_H__
|
#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
|
OS|Windows NT|5.1.2600 Service Pack 2
|
||||||
CPU|x86|GenuineIntel family 6 model 13 stepping 8
|
CPU|x86|GenuineIntel family 6 model 13 stepping 8
|
||||||
Crash|EXCEPTION_ACCESS_VIOLATION|0x45|0
|
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|dbghelp.dll|5.1.2600.2180|0x59a60000|0x59b00fff|0
|
||||||
Module|imm32.dll|5.1.2600.2180|0x76390000|0x763acfff|0
|
Module|imm32.dll|5.1.2600.2180|0x76390000|0x763acfff|0
|
||||||
Module|psapi.dll|5.1.2600.2180|0x76bf0000|0x76bfafff|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|kernel32.dll|5.1.2600.2945|0x7c800000|0x7c8f3fff|0
|
||||||
Module|ntdll.dll|5.1.2600.2180|0x7c900000|0x7c9affff|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|0|test_app.exe|`anonymous namespace'::CrashFunction|c:\test_app.cc|58|0x3
|
||||||
0|1|test_app.exe|main|c:\test_app.cc|63|0x4
|
0|1|test_app.exe|main|c:\test_app.cc|65|0x4
|
||||||
0|2|test_app.exe|__tmainCRTStartup|f:\rtm\vctools\crt_bld\self_x86\crt\src\crt0.c|318|0x11
|
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
|
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
|
Crash address: 0x45
|
||||||
|
|
||||||
Thread 0 (crashed)
|
Thread 0 (crashed)
|
||||||
0 test_app.exe!`anonymous namespace'::CrashFunction [test_app.cc : 56 + 0x3]
|
0 test_app.exe!`anonymous namespace'::CrashFunction [test_app.cc : 58 + 0x3]
|
||||||
eip = 0x00403f6e esp = 0x0012fe8c ebp = 0x0012fe90 ebx = 0x7c80abc1
|
eip = 0x0040429e esp = 0x0012fe84 ebp = 0x0012fe88 ebx = 0x7c80abc1
|
||||||
esi = 0x00000002 edi = 0x00000a28 eax = 0x00000045 ecx = 0x0012fe9c
|
esi = 0x00000002 edi = 0x00000a28 eax = 0x00000045 ecx = 0x0012fe94
|
||||||
edx = 0x0042ac60 efl = 0x00010246
|
edx = 0x0042bc58 efl = 0x00010246
|
||||||
1 test_app.exe!main [test_app.cc : 63 + 0x4]
|
1 test_app.exe!main [test_app.cc : 65 + 0x4]
|
||||||
eip = 0x00403ed0 esp = 0x0012fe98 ebp = 0x0012ff70
|
eip = 0x00404200 esp = 0x0012fe90 ebp = 0x0012ff70
|
||||||
2 test_app.exe!__tmainCRTStartup [crt0.c : 318 + 0x11]
|
2 test_app.exe!__tmainCRTStartup [crt0.c : 327 + 0x11]
|
||||||
eip = 0x00405096 esp = 0x0012ff78 ebp = 0x0012ffc0
|
eip = 0x004053ec esp = 0x0012ff78 ebp = 0x0012ffc0
|
||||||
3 kernel32.dll!BaseProcessStart + 0x22
|
3 kernel32.dll!BaseProcessStart + 0x22
|
||||||
eip = 0x7c816fd7 esp = 0x0012ffc8 ebp = 0x0012fff0
|
eip = 0x7c816fd7 esp = 0x0012ffc8 ebp = 0x0012fff0
|
||||||
|
|
||||||
Loaded modules:
|
Loaded modules:
|
||||||
0x00400000 - 0x0042bfff test_app.exe ??? (main)
|
0x00400000 - 0x0042cfff test_app.exe ??? (main)
|
||||||
0x59a60000 - 0x59b00fff dbghelp.dll 5.1.2600.2180
|
0x59a60000 - 0x59b00fff dbghelp.dll 5.1.2600.2180
|
||||||
0x76390000 - 0x763acfff imm32.dll 5.1.2600.2180
|
0x76390000 - 0x763acfff imm32.dll 5.1.2600.2180
|
||||||
0x76bf0000 - 0x76bfafff psapi.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
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue