Demangle symbols in debug assertion messages
Jonathan Wakely
jwakely@redhat.com
Wed May 20 10:17:00 GMT 2015
On 04/05/15 22:31 +0200, François Dumont wrote:
>Hi
>
> Here is the patch to demangle symbols in debug messages. I have
>also simplify code in formatter.h.
>
> Here is an example of assertion message:
>
>/home/fdt/dev/gcc/build/x86_64-unknown-linux-gnu/libstdc++-v3/include/debug/functions.h:213:
> error: function requires a valid iterator range [__first, __last).
>
>Objects involved in the operation:
>iterator "__first" @ 0x0x7fff165d68b0 {
> type =
>__gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<int*,
>std::__cxx1998::vector<int, std::allocator<int> > >,
>std::__debug::vector<int, std::allocator<int> > > (mutable iterator);
> state = dereferenceable;
> references sequence with type `std::__debug::vector<int,
>std::allocator<int> >' @ 0x0x7fff165d69d0
>}
>iterator "__last" @ 0x0x7fff165d68e0 {
> type =
>__gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<int*,
>std::__cxx1998::vector<int, std::allocator<int> > >,
>std::__debug::vector<int, std::allocator<int> > > (mutable iterator);
> state = dereferenceable;
> references sequence with type `std::__debug::vector<int,
>std::allocator<int> >' @ 0x0x7fff165d69d0
>}
>
>
> * include/debug/formatter.h (_GLIBCXX_TYPEID): New macro to simplify
> usage of typeid.
> (_Error_formatter::_M_print_type): New.
> * src/c++11/debug.cc
> (_Error_formatter::_Parameter::_M_print_field): Use latter.
> (_Error_formatter::_M_print_type): Implement latter using
> __cxaabiv1::__cxa_demangle to print demangled type name.
>
>I just hope that __cxa_demangle is portable.
It's provided by GCC itself so is always available in the runtime.
(It is also portable, because it's defined by the Itanium C++ ABI).
>Ok to commit ?
Yes, this is great, thanks!
More information about the Libstdc++
mailing list