Skip to content
Browse files

Verbosify exception tracer dumps

Test Plan: by hand

Reviewed By: philipp@fb.com

FB internal diff: D570233
  • Loading branch information...
1 parent 78ee280 commit 6b4082ec2603c63cde2e33fb2c94e5a2ef9a8aa8 @tudor tudor committed with jdelong Sep 10, 2012
Showing with 21 additions and 11 deletions.
  1. +21 −11 folly/experimental/exception_tracer/ExceptionTracer.cpp
View
32 folly/experimental/exception_tracer/ExceptionTracer.cpp
@@ -44,18 +44,27 @@ namespace exception_tracer {
std::ostream& operator<<(std::ostream& out, const ExceptionInfo& info) {
out << "Exception type: ";
if (info.type) {
- out << folly::demangle(*info.type) << "\n";
+ out << folly::demangle(*info.type);
} else {
- out << "(unknown type)\n";
+ out << "(unknown type)";
}
- Symbolizer symbolizer;
- folly::StringPiece symbolName;
- Dwarf::LocationInfo location;
- for (auto ip : info.frames) {
- // Symbolize the previous address because the IP might be in the
- // next function, per glog/src/signalhandler.cc
- symbolizer.symbolize(ip-1, symbolName, location);
- Symbolizer::write(out, ip, symbolName, location);
+ out << " (" << info.frames.size()
+ << (info.frames.size() == 1 ? " frame" : " frames")
+ << ")\n";
+ try {
+ Symbolizer symbolizer;
+ folly::StringPiece symbolName;
+ Dwarf::LocationInfo location;
+ for (auto ip : info.frames) {
+ // Symbolize the previous address because the IP might be in the
+ // next function, per glog/src/signalhandler.cc
+ symbolizer.symbolize(ip-1, symbolName, location);
+ Symbolizer::write(out, ip, symbolName, location);
+ }
+ } catch (const std::exception& e) {
+ out << "\n !! caught " << folly::exceptionStr(e) << "\n";
+ } catch (...) {
+ out << "\n !!! caught unexpected exception\n";
}
return out;
}
@@ -159,10 +168,11 @@ void dumpExceptionStack(const char* prefix) {
if (exceptions.empty()) {
return;
}
- LOG(ERROR) << prefix << ", exception stack follows\n";
+ LOG(ERROR) << prefix << ", exception stack follows";
for (auto& exc : exceptions) {
LOG(ERROR) << exc << "\n";
}
+ LOG(ERROR) << "exception stack complete";
}
void terminateHandler() {

0 comments on commit 6b4082e

Please sign in to comment.
Something went wrong with that request. Please try again.