TEST(Symbolizer, Single) { Symbolizer symbolizer; SymbolizedFrame a; ASSERT_TRUE(symbolizer.symbolize(reinterpret_cast<uintptr_t>(foo), a)); EXPECT_EQ("folly::symbolizer::test::foo()", a.demangledName()); auto path = a.location.file.toString(); folly::StringPiece basename(path); auto pos = basename.rfind('/'); if (pos != folly::StringPiece::npos) { basename.advance(pos + 1); } EXPECT_EQ("SymbolizerTest.cpp", basename.str()); }
TEST(Symbolizer, Single) { Symbolizer symbolizer; SymbolizedFrame a; ASSERT_TRUE(symbolizer.symbolize(reinterpret_cast<uintptr_t>(foo), a)); EXPECT_EQ("folly::symbolizer::test::foo()", a.demangledName()); // The version of clang we use doesn't generate a `.debug_aranges` section, // which the symbolizer needs to lookup the filename. constexpr bool built_with_clang = #ifdef __clang__ true; #else false; #endif if (!built_with_clang) { auto path = a.location.file.toString(); folly::StringPiece basename(path); auto pos = basename.rfind('/'); if (pos != folly::StringPiece::npos) { basename.advance(pos + 1); } EXPECT_EQ("SymbolizerTest.cpp", basename.str()); } }