diff --git a/include/boost/stacktrace/detail/backtrace_holder_libunwind.hpp b/include/boost/stacktrace/detail/backtrace_holder_libunwind.hpp index 96a6a10..097639f 100644 --- a/include/boost/stacktrace/detail/backtrace_holder_libunwind.hpp +++ b/include/boost/stacktrace/detail/backtrace_holder_libunwind.hpp @@ -49,6 +49,14 @@ struct backtrace_holder { return frames[frame].addr; } + inline std::string get_source_file(std::size_t /*frame*/) const { + return std::string(); + } + + inline std::size_t get_source_line(std::size_t /*frame*/) const BOOST_NOEXCEPT { + return 0; + } + inline std::string get_frame(std::size_t frame) const { if (frame < frames_count) { return frames[frame].name; diff --git a/include/boost/stacktrace/detail/backtrace_holder_linux.hpp b/include/boost/stacktrace/detail/backtrace_holder_linux.hpp index 06a1d7c..f4c7b6b 100644 --- a/include/boost/stacktrace/detail/backtrace_holder_linux.hpp +++ b/include/boost/stacktrace/detail/backtrace_holder_linux.hpp @@ -34,6 +34,14 @@ struct backtrace_holder { return buffer[frame]; } + inline std::string get_source_file(std::size_t /*frame*/) const { + return std::string(); + } + + inline std::size_t get_source_line(std::size_t /*frame*/) const BOOST_NOEXCEPT { + return 0; + } + inline std::string get_frame(std::size_t frame) const { std::string res; if (frame >= frames_count) { diff --git a/include/boost/stacktrace/detail/backtrace_holder_noop.hpp b/include/boost/stacktrace/detail/backtrace_holder_noop.hpp index 5174d27..18ab888 100644 --- a/include/boost/stacktrace/detail/backtrace_holder_noop.hpp +++ b/include/boost/stacktrace/detail/backtrace_holder_noop.hpp @@ -24,6 +24,14 @@ struct backtrace_holder { return 0; } + inline std::string get_source_file(std::size_t /*frame*/) const { + return std::string(); + } + + inline std::size_t get_source_line(std::size_t /*frame*/) const BOOST_NOEXCEPT { + return 0; + } + inline std::string get_frame(std::size_t /*frame*/) const { return std::string(); } diff --git a/include/boost/stacktrace/detail/backtrace_holder_win_dbghelp.hpp b/include/boost/stacktrace/detail/backtrace_holder_win_dbghelp.hpp index 31266f2..2195cba 100644 --- a/include/boost/stacktrace/detail/backtrace_holder_win_dbghelp.hpp +++ b/include/boost/stacktrace/detail/backtrace_holder_win_dbghelp.hpp @@ -66,6 +66,14 @@ struct backtrace_holder { return buffer[frame]; } + inline std::string get_source_file(std::size_t /*frame*/) const { + return std::string(); + } + + inline std::size_t get_source_line(std::size_t /*frame*/) const BOOST_NOEXCEPT { + return 0; + } + inline std::string get_frame(std::size_t frame) const { std::string res; diff --git a/include/boost/stacktrace/detail/backtrace_holder_windows.hpp b/include/boost/stacktrace/detail/backtrace_holder_windows.hpp index 14b02e2..0bad8a6 100644 --- a/include/boost/stacktrace/detail/backtrace_holder_windows.hpp +++ b/include/boost/stacktrace/detail/backtrace_holder_windows.hpp @@ -25,6 +25,7 @@ #pragma comment(lib, "Dbgeng.lib") namespace boost { namespace stacktrace { namespace detail { + template class com_holder: boost::noncopyable { T* holder_; @@ -72,6 +73,14 @@ struct backtrace_holder { return buffer[frame]; } + inline std::string get_source_file(std::size_t /*frame*/) const { + return std::string(); + } + + inline std::size_t get_source_line(std::size_t /*frame*/) const BOOST_NOEXCEPT { + return 0; + } + static bool try_init_com(com_holder& idebug_) BOOST_NOEXCEPT { if (idebug_.is_inited()) { return true; diff --git a/include/boost/stacktrace/detail/stacktrace.ipp b/include/boost/stacktrace/detail/stacktrace.ipp index 45be1d4..9cdc249 100644 --- a/include/boost/stacktrace/detail/stacktrace.ipp +++ b/include/boost/stacktrace/detail/stacktrace.ipp @@ -60,11 +60,11 @@ const void* stacktrace::get_address(std::size_t frame) const BOOST_NOEXCEPT { } std::string stacktrace::get_source_file(std::size_t frame) const { - return std::string(); + return impl_.get_source_file(frame); } std::size_t stacktrace::get_source_line(std::size_t frame) const BOOST_NOEXCEPT { - return 0; + return impl_.get_source_line(frame); } bool stacktrace::operator< (const stacktrace& rhs) const BOOST_NOEXCEPT { diff --git a/src/stacktrace_src.ipp b/src/stacktrace_src.ipp index cc37157..896f9a1 100644 --- a/src/stacktrace_src.ipp +++ b/src/stacktrace_src.ipp @@ -75,11 +75,11 @@ const void* stacktrace::get_address(std::size_t frame) const BOOST_NOEXCEPT { } std::string stacktrace::get_source_file(std::size_t frame) const { - return std::string(); + return boost::stacktrace::detail::to_bt(impl_).get_source_file(frame); } std::size_t stacktrace::get_source_line(std::size_t frame) const BOOST_NOEXCEPT { - return 0; + return boost::stacktrace::detail::to_bt(impl_).get_source_line(frame); } bool stacktrace::operator< (const stacktrace& rhs) const BOOST_NOEXCEPT {