According to chatgpt the stracktrace object is only valid while the stack on 
which it has been allocated is still active and an allocation using new is not 
legal.

From: Antony Polukhin <antosh...@gmail.com>
Sent: Sunday, February 18, 2024 8:07 AM
To: boost-users <boost-users@lists.boost.org>
Cc: Foelsche, Peter (DI SW ICS CICV R&D SIM1 5) <peter.foels...@siemens.com>
Subject: Re: [Boost-users] boost::stacktrace::stacktrace AND addr2line


On Fri, Feb 9, 2024, 20:02 Foelsche, Peter via Boost-users 
<boost-users@lists.boost.org<mailto:boost-users@lists.boost.org>> wrote:
Dear All,

Thanks for outstanding quality of boost!

I'm using the stacktrace object together with debug info and 
BOOST_STACKTRACE_USE_ADDR2LINE defined.
Would it be possible to cache the output of addr2line assuming that during the 
lifetime of the calling process the queried executable or shared objects do not 
change?

You could do a generic cache that does not depend on the stacktrace 
implementation. Just make a unordered_map and map a stacktrace object to a 
string with decoded stacktrace. Or you could do a per-frame cache, mapping a 
frame to demangled name. Here's an example: 
https://github.com/userver-framework/userver/blob/develop/universal/src/logging/stacktrace_cache.cpp
Thanks
Peter

_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org<mailto:Boost-users@lists.boost.org>
https://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
https://lists.boost.org/mailman/listinfo.cgi/boost-users

Reply via email to