diff --git a/Tracking/TrkEvent/TrkTrack/src/TrackStateOnSurface.cxx b/Tracking/TrkEvent/TrkTrack/src/TrackStateOnSurface.cxx index a9bfc89c8bdce55b7a4833e6fc38c9a33d4bd0b0..46bf55384ba9aecdb72b1c9d06f47aa3eeed213f 100755 --- a/Tracking/TrkEvent/TrkTrack/src/TrackStateOnSurface.cxx +++ b/Tracking/TrkEvent/TrkTrack/src/TrackStateOnSurface.cxx @@ -8,6 +8,26 @@ #include <iostream> #include <stdexcept> #include <string> +#include <dlfcn.h> + + +namespace { +void syminfo (void* addr) +{ + Dl_info info; + std::cerr << " " << addr; + if (dladdr (addr, &info) != 0) { + if (info.dli_fname) { + std::cerr << " " << info.dli_fname << " " << info.dli_fbase; + } + if (info.dli_sname) { + std::cerr << " " << info.dli_sname << " " << info.dli_saddr; + } + } + std::cerr << "\n"; +} +} + namespace Trk { TrackStateOnSurface::TrackStateOnSurface() {} @@ -155,7 +175,9 @@ TrackStateOnSurface::~TrackStateOnSurface() const char* p = reinterpret_cast<const char*>(m_alignmentEffectsOnTrack.get()); if (p && reinterpret_cast<uintptr_t>(p) < 0x1000) { std::cerr << "ERROR: ~TrackStateOnSurface bad AEOT pointer\n"; - CxxUtils::safeHexdump (std::cerr, ((const char*)this)-32, sizeof(TrackStateOnSurface)+32); + CxxUtils::safeHexdump (std::cerr, ((const char*)this)-80, sizeof(TrackStateOnSurface)+80+24); + syminfo (((void**)this)[0]); + syminfo (((void**)this)[-4]); } }