Boost logo

Boost Users :

Subject: Re: [Boost-users] [boost] Checking interest in stacktrace library
From: Chris Cleeland (chris.cleeland_at_[hidden])
Date: 2016-06-20 23:34:18


On Sat, Jun 18, 2016 at 12:51 PM, Jason Roehm <jasonr_at_[hidden]> wrote:

>
>
> On Jun 18, 2016, at 12:44 PM, Antony Polukhin <antoshkka_at_[hidden]> wrote:
>
>
>
> 2016-06-18 17:49 GMT+03:00 Edward Diener <eldiener_at_[hidden]>:
>
>> On 6/18/2016 6:34 AM, Antony Polukhin wrote:
>>
>>> Is there interest in it?
>>> What functionality would you like to have in it?
>>>
>>
>> Documentation is always helpful.
>>
>
> Yeep, that's currently missing :(
>
> If in short:
>
> namespace boost { namespace stacktrace {
>
> 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);
>
> }}
>
> So you can construct stacktraces, copy them and output them to streams:
>
> std::cerr << stacktrace();
>
>
> I think a library like this could be very useful for practical
> cross-platform development.
>
>
Years back I implemented an abstraction for this which I contributed to ACE
(http://www.dre.vanderbilt.edu/%7Eschmidt/ACE.html)

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.cpp

You might be able to use the implementations there as a starting point.

-- 
Chris Cleeland


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net