Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: asmwarrior <asmwarrior@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>, gdb@sourceware.org
Subject: Re: How to load C++ pretty-printers
Date: Sat, 16 Mar 2019 12:41:00 -0000	[thread overview]
Message-ID: <f9779cd9-b2e2-93dd-ff14-12b6e5a9db23@gmail.com> (raw)
In-Reply-To: <835zsjz0f8.fsf@gnu.org>

On Sat Mar 16 2019 16:30:19 GMT+0800, Eli Zaretskii wrote:
> I have a question regarding loading the C++ pretty-printers provided
> by GCC.  This might be specific to MS-Windows, not sure.
> 
> So I have the C++ pretty-printers installed in
> d:/usr/share/gcc-7.3.0/python/libstdcxx/v6.  I start GDB to debug
> itself.  The "info pretty-printer" command says:
> 
>   (top-gdb) info pretty-printer
>   global pretty-printers:
>     builtin
>       mpx_bound128
>     objfile D:\gnu\gdb-8.2\gdb\gdb.exe pretty-printers:
>     type_lookup_function
> 
> This doesn't seem to mention the GCC-provided C++ pretty-printers.  So
> I start the inferior GDB running:
> 
>   (top-gdb) start --config
> 
> After that, "info pretty-printers" still shows no C++ pretty-printers.
> OK, me thinks, this could be because libstdc++ is statically linked
> into GDB, so I load the pretty-printers by hand:
> 
>   (top-gdb) source d:/usr/share/gcc-7.3.0/python/libstdcxx/v6/printers.py

Under My Windows 7 system, I'm using such commands(I put them in a my.gdb script file) to load and register the pretty printers.
I put the libstdcxx folder in the same folder as the my.gdb file.
 

set auto-load safe-path $debugdir;$datadir/auto-load
python
import sys
sys.path.insert(0, '')
from libstdcxx.v6.printers import register_libstdcxx_printers
# load other pretty printers
end


And here is the result of info pretty-printer command

global pretty-printers:
  .*
    bound
  builtin
    mpx_bound128
  libstdc++-v6
    __gnu_cxx::_Slist_iterator
    __gnu_cxx::__7::_Slist_iterator
    __gnu_cxx::__7::__normal_iterator
    __gnu_cxx::__7::slist
    __gnu_cxx::__normal_iterator
    __gnu_cxx::slist
    __gnu_debug::_Safe_iterator
    std::_Deque_const_iterator
    std::_Deque_iterator
    std::_List_const_iterator
    std::_List_iterator
    std::_Rb_tree_const_iterator
    std::_Rb_tree_iterator
    std::__7::_Deque_const_iterator
    std::__7::_Deque_iterator
    std::__7::_List_const_iterator
    std::__7::_List_iterator
    std::__7::_Rb_tree_const_iterator
    std::__7::_Rb_tree_iterator
    std::__7::__cxx11::basic_string
    std::__7::basic_string
    std::__7::bitset
    std::__7::deque
    std::__7::forward_list
    std::__7::list
    std::__7::map
    std::__7::multimap
    std::__7::multiset
    std::__7::priority_queue
    std::__7::queue
    std::__7::set
    std::__7::shared_ptr
    std::__7::stack
    std::__7::tuple
    std::__7::unique_ptr
    std::__7::unordered_map
    std::__7::unordered_multimap
    std::__7::unordered_multiset
    std::__7::unordered_set
    std::__7::vector
    std::__7::weak_ptr
    std::__cxx11::basic_string
    std::__cxx1998::_Deque_const_iterator
    std::__cxx1998::_Deque_iterator
    std::__cxx1998::_List_const_iterator
    std::__cxx1998::_List_iterator
    std::__cxx1998::__7::_Deque_const_iterator
    std::__cxx1998::__7::_Deque_iterator
    std::__cxx1998::__7::_List_const_iterator
    std::__cxx1998::__7::_List_iterator
    std::__cxx1998::__7::bitset
    std::__cxx1998::__7::deque
    std::__cxx1998::__7::forward_list
    std::__cxx1998::__7::list
    std::__cxx1998::__7::map
    std::__cxx1998::__7::multimap
    std::__cxx1998::__7::multiset
    std::__cxx1998::__7::set
    std::__cxx1998::__7::unordered_map
    std::__cxx1998::__7::unordered_multimap
    std::__cxx1998::__7::unordered_multiset
    std::__cxx1998::__7::unordered_set
    std::__cxx1998::__7::vector
    std::__cxx1998::bitset
    std::__cxx1998::deque
    std::__cxx1998::forward_list
    std::__cxx1998::list
    std::__cxx1998::map
    std::__cxx1998::multimap
    std::__cxx1998::multiset
    std::__cxx1998::set
    std::__cxx1998::unordered_map
    std::__cxx1998::unordered_multimap
    std::__cxx1998::unordered_multiset
    std::__cxx1998::unordered_set
    std::__cxx1998::vector
    std::__debug::bitset
    std::__debug::deque
    std::__debug::forward_list
    std::__debug::list
    std::__debug::map
    std::__debug::multimap
    std::__debug::multiset
    std::__debug::priority_queue
    std::__debug::queue
    std::__debug::set
    std::__debug::stack
    std::__debug::unique_ptr
    std::__debug::unordered_map
    std::__debug::unordered_multimap
    std::__debug::unordered_multiset
    std::__debug::unordered_set
    std::__debug::vector
    std::__norm::_Deque_const_iterator
    std::__norm::_Deque_iterator
    std::__norm::_List_const_iterator
    std::__norm::_List_iterator
    std::basic_string
    std::bitset
    std::deque
    std::experimental::fundamentals_v1::__7::any
    std::experimental::fundamentals_v1::__7::basic_string_view
    std::experimental::fundamentals_v1::__7::optional
    std::experimental::fundamentals_v1::any
    std::experimental::fundamentals_v1::basic_string_view
    std::experimental::fundamentals_v1::optional
    std::forward_list
    std::list
    std::map
    std::multimap
    std::multiset
    std::priority_queue
    std::queue
    std::set
    std::shared_ptr
    std::stack
    std::tr1::__7::shared_ptr
    std::tr1::__7::unordered_map
    std::tr1::__7::unordered_multimap
    std::tr1::__7::unordered_multiset
    std::tr1::__7::unordered_set
    std::tr1::__7::weak_ptr
    std::tr1::shared_ptr
    std::tr1::unordered_map
    std::tr1::unordered_multimap
    std::tr1::unordered_multiset
    std::tr1::unordered_set
    std::tr1::weak_ptr
    std::tuple
    std::unique_ptr
    std::unordered_map
    std::unordered_multimap
    std::unordered_multiset
    std::unordered_set
    std::vector
    std::weak_ptr
  lookup_function

If I remember correctly, there used to be a function call register_libstdcxx_printers() like below:

from libstdcxx.v6.printers import register_libstdcxx_printers
register_libstdcxx_printers (None)

But later, the "register_libstdcxx_printers (None)" is not needed any more.

Asmwarrior


  reply	other threads:[~2019-03-16 12:41 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-03-16  8:30 Eli Zaretskii
2019-03-16 12:41 ` asmwarrior [this message]
2019-03-16 12:58   ` Eli Zaretskii
2019-03-16 13:21     ` asmwarrior
2019-03-16 14:25     ` Simon Marchi
2019-03-16 16:00       ` Eli Zaretskii
2019-03-17  1:47         ` asmwarrior
2019-03-17 11:03           ` Joel Brobecker
2019-03-17 12:39             ` Philippe Waroquiers
2019-03-17 15:31               ` Eli Zaretskii
2019-03-17 17:17                 ` Philippe Waroquiers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=f9779cd9-b2e2-93dd-ff14-12b6e5a9db23@gmail.com \
    --to=asmwarrior@gmail.com \
    --cc=eliz@gnu.org \
    --cc=gdb@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox