
Hi Mathias, Thank you for the ideas! Actually, both of those things are on our backlogs. Hopefully these will be included in the next major release. Regards, András On Sat, Nov 29, 2014 at 6:56 PM, Mathias Gaunard < mathias.gaunard@ens-lyon.org> wrote:
On 26/11/2014 21:22, Abel Sinkovics wrote:
Hi,
Metashell 2.0.0 has a template metaprogram debugger with a GDB-like interface (thanks to András Kucsma), which can be useful for Boost developers. It can show you how your metaprogram is executed step-by-step. You can set breakpoints, step into or over the metafunction calls and inspect the "template metaprogramming stack trace" at any point during this: the chain of recursive template instantiations that lead to that point. Here is an example:
#include <boost/mpl/transform.hpp> #include <boost/mpl/vector_c.hpp> #include <boost/mpl/plus.hpp> #include <boost/mpl/lambda.hpp> #include <boost/mpl/int.hpp> using namespace boost::mpl; #msh mdb transform<vector_c<int, 1, 2, 3, 4, 5>, plus<_1, int_<1>>>::type For help, type "help". Metaprogram started (mdb) rbreak ^boost::mpl::plus Breakpoint "^boost::mpl::plus" will stop the execution on 25 locations (mdb) continue Breakpoint "^boost::mpl::plus" reached boost::mpl::plus<mpl_::integral_c<int, 1>, mpl_::int_<1>, mpl_::na, mpl_::na, mpl_::na> (Memoization) (mdb) bt #0 boost::mpl::plus<mpl_::integral_c<int, 1>, mpl_::int_<1>, mpl_::na, mpl_::na, mpl_::na> (Memoization) #1 boost::mpl::quote_impl<boost::mpl::plus<mpl_::integral_c<int, 1>, mpl_::int_<1>, mpl_::na, mpl_::na, mpl_::na>, true> (TemplateInstantiation) #2 boost::mpl::quote5<plus, mpl_::void_>::apply<mpl_::integral_c<int, 1>, mpl_::int_<1>, mpl_::na, mpl_::na, mpl_::na> (TemplateInstantiation) #3 boost::mpl::apply_wrap5<boost::mpl::quote5<plus, mpl_::void_>, mpl_::integral_c<int, 1>, mpl_::int_<1>, mpl_::na, mpl_::na, mpl_::na> (TemplateInstantiation) ... #19 transform<vector_c<int, 1, 2, 3, 4, 5>, plus<_1, int_<1>>>::type
From a glance, it appears to be missing important things to make it useful:
- pretty printing complex types so that you can actually read them I don't think the formatter thing is a solution. Consider an arbitrarily deep expression template tree, for example.
- easily get the source responsible for the instantiation full path and line information for each element in the backtrace is needed. Ideally you want to output that in a format where most smart editors can directly recognize it and jump there in a click.
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/ mailman/listinfo.cgi/boost