
On 17 Dec 2016 at 21:43, Antony Polukhin wrote:
Also, I get why there's the stack-trace function at the top of the stacktrace, and it would be the wrong approach to remove it manually. I would however like a workaround, so that the stacktrace doesn't include those calls.
That top level frame may dissappear/reapper depending on the compiler version and even compiler flags. I was experimenting with skipping the first frame or forcing inlinement. I've found no good way to resolve that issue.
As I mentioned in a previous post, you want to use noinline to force a guaranteed first entry to strip. As it's a header only library, you'll get this perversity:
__declspec(noinline) inline void make_backtrace(...)
... which is completely legal because you want inline linkage semantics, but to never inline the function.
Oh, now I've got that. I've been confused by the `__declspec(noinline) inline`. Thanks again! Does the `BOOST_NOINLINE inline` solution work well on GCC, CLANG and other compilers?
For the major compilers targeting their native ecosystem I've found they work as expected. Though the markup is perverse, and you might want to add an explanatory comment :). Niall -- ned Productions Limited Consulting http://www.nedproductions.biz/ http://ie.linkedin.com/in/nialldouglas/