How to print wstring in gdb

gdb, wstring

Solution

`call printf %ls` only works sometimes, but to get it to work at all in gdb 6.3 you need the `void` cast and linefeed `\n` shown here:

call (void)printf("\"%ls\"\n",str.c_str())

here is a more reliable command you can put in your .gdbinit that also shows non-ASCII code points:

define wc_print
echo "
set $c = (wchar_t*)$arg0
while ( *$c )
  if ( *$c > 0x7f )
    printf "[%x]", *$c
  else
    printf "%c", *$c
  end
  set $c++
end
echo "\n
end

just enter `wc` (short for `wc_print`) with either a `std::wstring` or `wchar_t*`.

More detail at http://www.firstobject.com/wchar_t-gdb.htm

Problem

How can I print wstring in gdb?

Original source