diff options
author | ivan.penkov@gmail.com <ivan.penkov@gmail.com@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2013-03-06 19:32:13 +0000 |
---|---|---|
committer | ivan.penkov@gmail.com <ivan.penkov@gmail.com@4c0a9323-5329-0410-9bdc-e9ce6186880e> | 2013-03-06 19:32:13 +0000 |
commit | 60b5f7c7e9a5c0856ce6f0e61af03fcb1fbb54bb (patch) | |
tree | 65a16d840ce1a5f78ddb206cfb8555928f71e126 /src/processor/stackwalker_arm_unittest.cc | |
parent | Allow building symbol dumping without STABS support (diff) | |
download | breakpad-60b5f7c7e9a5c0856ce6f0e61af03fcb1fbb54bb.tar.xz |
Keeping track of modules without symbols during crash report processing.
http://breakpad.appspot.com/534002/
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1126 4c0a9323-5329-0410-9bdc-e9ce6186880e
Diffstat (limited to 'src/processor/stackwalker_arm_unittest.cc')
-rw-r--r-- | src/processor/stackwalker_arm_unittest.cc | 53 |
1 files changed, 42 insertions, 11 deletions
diff --git a/src/processor/stackwalker_arm_unittest.cc b/src/processor/stackwalker_arm_unittest.cc index f1d18bb7..588b5c5f 100644 --- a/src/processor/stackwalker_arm_unittest.cc +++ b/src/processor/stackwalker_arm_unittest.cc @@ -41,6 +41,7 @@ #include "google_breakpad/common/minidump_format.h" #include "google_breakpad/processor/basic_source_line_resolver.h" #include "google_breakpad/processor/call_stack.h" +#include "google_breakpad/processor/code_module.h" #include "google_breakpad/processor/source_line_resolver_interface.h" #include "google_breakpad/processor/stack_frame_cpu.h" #include "processor/stackwalker_unittest_utils.h" @@ -49,6 +50,7 @@ using google_breakpad::BasicSourceLineResolver; using google_breakpad::CallStack; +using google_breakpad::CodeModule; using google_breakpad::StackFrameSymbolizer; using google_breakpad::StackFrame; using google_breakpad::StackFrameARM; @@ -139,7 +141,9 @@ TEST_F(SanityCheck, NoResolver) { StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules, &frame_symbolizer); // This should succeed even without a resolver or supplier. - ASSERT_TRUE(walker.Walk(&call_stack)); + vector<const CodeModule*> modules_without_symbols; + ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols)); + ASSERT_EQ(0U, modules_without_symbols.size()); frames = call_stack.frames(); ASSERT_EQ(1U, frames->size()); StackFrameARM *frame = static_cast<StackFrameARM *>(frames->at(0)); @@ -157,7 +161,9 @@ TEST_F(GetContextFrame, Simple) { StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules, &frame_symbolizer); - ASSERT_TRUE(walker.Walk(&call_stack)); + vector<const CodeModule*> modules_without_symbols; + ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols)); + ASSERT_EQ(0U, modules_without_symbols.size()); frames = call_stack.frames(); ASSERT_EQ(1U, frames->size()); StackFrameARM *frame = static_cast<StackFrameARM *>(frames->at(0)); @@ -172,7 +178,9 @@ TEST_F(GetContextFrame, NoStackMemory) { StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); StackwalkerARM walker(&system_info, &raw_context, -1, NULL, &modules, &frame_symbolizer); - ASSERT_TRUE(walker.Walk(&call_stack)); + vector<const CodeModule*> modules_without_symbols; + ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols)); + ASSERT_EQ(0U, modules_without_symbols.size()); frames = call_stack.frames(); ASSERT_EQ(1U, frames->size()); StackFrameARM *frame = static_cast<StackFrameARM *>(frames->at(0)); @@ -220,7 +228,11 @@ TEST_F(GetCallerFrame, ScanWithoutSymbols) { StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules, &frame_symbolizer); - ASSERT_TRUE(walker.Walk(&call_stack)); + vector<const CodeModule*> modules_without_symbols; + ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols)); + ASSERT_EQ(2U, modules_without_symbols.size()); + ASSERT_EQ("module1", modules_without_symbols[0]->debug_file()); + ASSERT_EQ("module2", modules_without_symbols[1]->debug_file()); frames = call_stack.frames(); ASSERT_EQ(3U, frames->size()); @@ -284,7 +296,9 @@ TEST_F(GetCallerFrame, ScanWithFunctionSymbols) { StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules, &frame_symbolizer); - ASSERT_TRUE(walker.Walk(&call_stack)); + vector<const CodeModule*> modules_without_symbols; + ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols)); + ASSERT_EQ(0U, modules_without_symbols.size()); frames = call_stack.frames(); ASSERT_EQ(2U, frames->size()); @@ -345,7 +359,11 @@ TEST_F(GetCallerFrame, ScanFirstFrame) { StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules, &frame_symbolizer); - ASSERT_TRUE(walker.Walk(&call_stack)); + vector<const CodeModule*> modules_without_symbols; + ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols)); + ASSERT_EQ(2U, modules_without_symbols.size()); + ASSERT_EQ("module1", modules_without_symbols[0]->debug_file()); + ASSERT_EQ("module2", modules_without_symbols[1]->debug_file()); frames = call_stack.frames(); ASSERT_EQ(2U, frames->size()); @@ -453,7 +471,9 @@ struct CFIFixture: public StackwalkerARMFixture { StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules, &frame_symbolizer); walker.SetContextFrameValidity(context_frame_validity); - ASSERT_TRUE(walker.Walk(&call_stack)); + vector<const CodeModule*> modules_without_symbols; + ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols)); + ASSERT_EQ(0U, modules_without_symbols.size()); frames = call_stack.frames(); ASSERT_EQ(2U, frames->size()); @@ -645,7 +665,9 @@ TEST_F(CFI, RejectBackwards) { StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules, &frame_symbolizer); - ASSERT_TRUE(walker.Walk(&call_stack)); + vector<const CodeModule*> modules_without_symbols; + ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols)); + ASSERT_EQ(0U, modules_without_symbols.size()); frames = call_stack.frames(); ASSERT_EQ(1U, frames->size()); } @@ -657,7 +679,9 @@ TEST_F(CFI, RejectBadExpressions) { StackFrameSymbolizer frame_symbolizer(&supplier, &resolver); StackwalkerARM walker(&system_info, &raw_context, -1, &stack_region, &modules, &frame_symbolizer); - ASSERT_TRUE(walker.Walk(&call_stack)); + vector<const CodeModule*> modules_without_symbols; + ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols)); + ASSERT_EQ(0U, modules_without_symbols.size()); frames = call_stack.frames(); ASSERT_EQ(1U, frames->size()); } @@ -715,7 +739,11 @@ TEST_F(GetFramesByFramePointer, OnlyFramePointer) { StackwalkerARM walker(&system_info, &raw_context, MD_CONTEXT_ARM_REG_IOS_FP, &stack_region, &modules, &frame_symbolizer); - ASSERT_TRUE(walker.Walk(&call_stack)); + vector<const CodeModule*> modules_without_symbols; + ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols)); + ASSERT_EQ(2U, modules_without_symbols.size()); + ASSERT_EQ("module1", modules_without_symbols[0]->debug_file()); + ASSERT_EQ("module2", modules_without_symbols[1]->debug_file()); frames = call_stack.frames(); ASSERT_EQ(3U, frames->size()); @@ -805,7 +833,10 @@ TEST_F(GetFramesByFramePointer, FramePointerAndCFI) { StackwalkerARM walker(&system_info, &raw_context, MD_CONTEXT_ARM_REG_IOS_FP, &stack_region, &modules, &frame_symbolizer); - ASSERT_TRUE(walker.Walk(&call_stack)); + vector<const CodeModule*> modules_without_symbols; + ASSERT_TRUE(walker.Walk(&call_stack, &modules_without_symbols)); + ASSERT_EQ(1U, modules_without_symbols.size()); + ASSERT_EQ("module2", modules_without_symbols[0]->debug_file()); frames = call_stack.frames(); ASSERT_EQ(3U, frames->size()); |