Boost logo

Boost Users :

Subject: Re: [Boost-users] Stacktrace library starts review today 14th Dec
From: Edward Diener (eldiener_at_[hidden])
Date: 2016-12-15 03:01:33


On 12/15/2016 2:08 AM, Antony Polukhin wrote:
> 2016-12-15 3:44 GMT+03:00 Edward Diener <eldiener_at_[hidden]>:
>> In the documentation for stacktrace I do not see anything about what level
>> of C++ is required for a compiler using the stacktrace library or any
>> information on what compilers have been tested when using the library.
>
> It's C++98. Tested on latest clang(c++03, c++11), gcc(c++98, c++11,
> c++1y), msvc.

Some of your examples in the doc use c++11 features, so I think you need
to specifically say in the doc that the library itself is c++98 on up.

>
>
>> In the section of "Build, Macros and Backends" I do not think there is
>> enough information about using a particular backend, other than saying that
>> you need to link with such-and-such. Does stacktrace "automatically" find
>> the header files it needs from these backends ? Even so I think some
>> information about where it looks for the backend header files need to be
>> given. I also think that some information of what libraries it looks to link
>> with needs to be given. I am assuming it links with the static versions of
>> these backend libraries unless I define either BOOST_STACKTRACE_LINK and
>> BOOST_ALL_DYN_LINK, or BOOST_STACKTRACE_DYN_LINK. What if I want to use the
>> header-only version but I want to link with the shared library backend ? I
>> also assume that if I link with the static library backend I should probably
>> be linking with the RTL static library, while if I link with the shared
>> library backend I should also be linking with the RTL shared library.
>>
>> What about 32-bit versus 64-bit use of stacktrace ? Do they both work as
>> advertised with the correct backends, whether static or shared ? I think the
>> "Build, Macros and Backends" need rto be expanded to cover alol these
>> topics.
>
> All the headers are found automatically and the library is header only
> if you do not define BOOST_STACKTRACE_LINK or
> BOOST_STACKTRACE_DYN_LINK.

I think you need to explain where you are "automatically" looking for
header files in case header files are not found.

>
> Backend is chosen automatically in header only mode. You need to do
> nothing, unless you encounter some problems on default setup (like you
> OS is POSIX but not LSB Core Specification 4.1) or unless you wish to
> disable stacktraces.

Again you need to explain where you are "automatically" looking for
appropriate static libraries in case one is not being found.

>
> If you define BOOST_STACKTRACE_LINK or BOOST_STACKTRACE_DYN_LINK you
> have to manually link with one of the backends.
>
>
> I'll try to improve the "Build, Macros and Backends" section to be more clear.

Please do, You don't want annoyed end-users in case all this "automatic"
finding does not work as you imagine it should. Furthermore explanations
of what RTL ( static or shared ) should/need be used should be explained
also. These various combinations of static or shared backends and/or
RTLs need to be explained. I gather the backends themselves are not
hooked to compiler RTLs, but I do not know if stacktrace itself uses
compiler RTLs or not, but I expect it might.

Don't annoy end-users of your library by assuming that all this stuff
must "just work", so you do not need to explain these things in detail,
because if it does not "just work" as you imagine the first thing they
will probably do is dismiss your library.


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