diff --git a/ChangeLog b/ChangeLog index d74c0d8586..6641b4262b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -26,6 +26,8 @@ - Documentation + Cleaned up removed parrot cmdline options -D/-O/-v from --help output and running.pod [GH #838] + - Tools + + Improved gdb pretty-printing for multi-byte strings - Tests - Community diff --git a/tools/dev/gdb-pp.py b/tools/dev/gdb-pp.py index 25682b7858..3369eeec77 100644 --- a/tools/dev/gdb-pp.py +++ b/tools/dev/gdb-pp.py @@ -155,6 +155,11 @@ def _parrot_str_to_str(val): """ encoding = val['encoding'].dereference() encoding_name = encoding['name'].string() + name = encoding_name + ':' + if name == 'ascii:': + name = '' + if name == 'iso-8859-1:': + name = '' length = val['bufused'] # See http://docs.python.org/library/codecs.html#standard-encodings @@ -164,4 +169,9 @@ def _parrot_str_to_str(val): encoding_name='utf_16' if encoding_name == 'ucs4': encoding_name=='utf_32' - return val['strstart'].string(encoding=encoding_name,length=length) + if name == '': + return val['strstart'].string(encoding=encoding_name,errors='replace',length=length) + else: + return '%s%s [%d/%d]' % \ + (name, val['strstart'].string(encoding=encoding_name,errors='replace',length=length), \ + val['strlen'], length)