<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Jun 18, 2016 at 12:51 PM, Jason Roehm <span dir="ltr"><<a href="mailto:jasonr@3db-labs.com" target="_blank">jasonr@3db-labs.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="auto"><span class=""><div></div><div><br></div><div><br>On Jun 18, 2016, at 12:44 PM, Antony Polukhin <<a href="mailto:antoshkka@gmail.com" target="_blank">antoshkka@gmail.com</a>> wrote:<br><br></div><blockquote type="cite"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">2016-06-18 17:49 GMT+03:00 Edward Diener <span dir="ltr"><<a href="mailto:eldiener@tropicsoft.com" target="_blank">eldiener@tropicsoft.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><span>On 6/18/2016 6:34 AM, Antony Polukhin wrote:</span><br><span><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"> Is there interest in it?<br> What functionality would you like to have in it?<br> </blockquote> <br></span> Documentation is always helpful.<br></blockquote><br></div><div class="gmail_quote">Yeep, that's currently missing :(<br></div><div class="gmail_quote"><br></div><div class="gmail_quote">If in short:<br><pre>namespace boost { namespace stacktrace {<br></pre><pre>class stacktrace { public: BOOST_STATIC_CONSTEXPR std::size_t max_symbol_width = 256; typedef boost::array<char, max_symbol_width> frame_t; stacktrace() BOOST_NOEXCEPT; stacktrace(const stacktrace& bt) BOOST_NOEXCEPT; stacktrace& operator=(const stacktrace& bt) BOOST_NOEXCEPT; ~stacktrace() BOOST_NOEXCEPT; std::size_t size() const BOOST_NOEXCEPT; frame_t operator[](std::size_t frame) const BOOST_NOEXCEPT; }; template <class CharT, class TraitsT> std::basic_ostream<CharT, TraitsT>& operator<<(std::basic_ostream<CharT, TraitsT>& os, const stacktrace& bt);</pre>}}<br><br></div><div class="gmail_quote">So you can construct stacktraces, copy them and output them to streams:<br><br></div><div class="gmail_quote">std::cerr << stacktrace();</div></div></div></blockquote><br></span><div>I think a library like this could be very useful for practical cross-platform development. </div><div><br></div></div></blockquote><div><br></div><div>Years back I implemented an abstraction for this which I contributed to ACE (<a href="http://www.dre.vanderbilt.edu/%7Eschmidt/ACE.html">http://www.dre.vanderbilt.edu/%7Eschmidt/ACE.html</a>)</div><div><br></div><div><a href="https://github.com/DOCGroup/ACE_TAO/blob/master/ACE/ace/Stack_Trace.h">https://github.com/DOCGroup/ACE_TAO/blob/master/ACE/ace/Stack_Trace.h</a><br></div><div><a href="https://github.com/DOCGroup/ACE_TAO/blob/master/ACE/ace/Stack_Trace.cpp">https://github.com/DOCGroup/ACE_TAO/blob/master/ACE/ace/Stack_Trace.cpp</a><br></div><div><br></div><div>You might be able to use the implementations there as a starting point.</div></div><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature">Chris Cleeland</div> </div></div>