Skip to content
This repository was archived by the owner on Mar 27, 2024. It is now read-only.
This repository was archived by the owner on Mar 27, 2024. It is now read-only.

Pretty printers don't work on libc++ 17.0.2 #19

@petersohn

Description

@petersohn

Out of the box, nothing works. If I type info pretty-printers, gdb lists the printers, but when trying to print variables, it doesn't find the right printer.

After some debugging, I found out that the type names are std::_LIBCPP_ABI_NAMESPACE::.... The type name lookup regex is '^std::__[a-zA-Z0-9]+::'. I replacing it with '^std::[a-zA-Z0-9_]+::', it now finds a types, and can at least print a string. However, when I tried to print a map, I got the following error message:

MapPrinter.to_string
std::map (count=1)Traceback (most recent call last):
  File "/home/parallels/workspace/libcxx-pretty-printers/src/libcxx/v1/printers.py", line 736, in __next__
    result = ('[%d] %s' % (self.count, str(item['__cc']['first'])),
                                           ~~~~^^^^^^^^
gdb.error: There is no member or method named __cc.

I haven't tried any other types yet, but it looks like there is some serious discrepancy with this libc++ version.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions