<div dir="ltr">Added some basic DenseMap support in r290011</div><br><div class="gmail_quote"><div dir="ltr">On Fri, Dec 16, 2016 at 2:05 PM David Blaikie <<a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr" class="gmail_msg">I've added a few LLVM GDB pretty printers a while back (& just added llvm::Optional earlier today) & thought people might be interested in how to use them, etc.<br class="gmail_msg"><br class="gmail_msg">I use them by adding the following to my .gdbinit:<br class="gmail_msg"><font face="monospace" class="gmail_msg"><br class="gmail_msg">  source /path/to/llvm/src/utils/gdb-scripts/prettyprinters.py</font><br class="gmail_msg"><br class="gmail_msg">Also, I can suggest adding:<br class="gmail_msg"><br class="gmail_msg"><font face="monospace" class="gmail_msg">  set print pretty on</font><br class="gmail_msg"><br class="gmail_msg">there too, it helps a lot when printing complex nested data structures.<br class="gmail_msg"><br class="gmail_msg">Once you have that, you can get pretty output like this:<br class="gmail_msg"><br class="gmail_msg"><div class="gmail_msg"><font face="monospace" class="gmail_msg">(gdb) p Abbrev->AbbrDeclSets</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">$1 = std::map with 1 elements = {</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">  [0] = {</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">    Offset = 0,</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">    FirstAbbrCode = 1,</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">    Decls = std::vector of length 1, capacity 1 = {{</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">        Code = 1,</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">        Tag = llvm::dwarf::Tag::DW_TAG_compile_unit,</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">        CodeByteSize = 1 '\001',</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">        HasChildren = false,</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">        AttributeSpecs = llvm::SmallVector of length 8, capacity 8 = {{</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">            Attr = llvm::dwarf::Attribute::DW_AT_low_pc,</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">            Form = llvm::dwarf::Form::DW_FORM_addr,</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">            ByteSize = llvm::Optional is not initialized</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">          }, {</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">            Attr = llvm::dwarf::Attribute::DW_AT_high_pc,</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">            Form = llvm::dwarf::Form::DW_FORM_data8,</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">            ByteSize = llvm::Optional is initialized = {</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">              value = 8 '\b'</font></div><div class="gmail_msg"><font face="monospace" class="gmail_msg">            }</font><br class="gmail_msg"><br class="gmail_msg">Here you can see the pretty printers for SmallVector and Optional, but there's also support for StringRef, SmallString, and ArrayRef.<br class="gmail_msg"><br class="gmail_msg">I've tried doing a DenseMap pretty printer, but haven't quite figured it out yet (having trouble calling member functions to do some of teh more complicated parts of DenseMap iteration - may end up printing it with the tombstone/empty values present, but not sure how easy that'll be to read, etc). Happy to take requests or talk people through adding more pretty printers anyone wants to add :)<br class="gmail_msg"><br class="gmail_msg">Enjoy!<br class="gmail_msg">- Dave</div></div></blockquote></div>