call printf %ls
работает только иногда, но чтобы заставить его работать вообще в gdb 6.3, вам нужен void
приведение и перевод строки \n
, показанный здесь:
call (void)printf("\"%ls\"\n",str.c_str())
вот более надежная команда, которую вы можете поместить в свой .gdbinit, которая также показывает не-ASCII кодовые точки:
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
просто введите wc
(сокращение от wc_print
) с std::wstring
или wchar_t*
.
Более подробно на http://www.firstobject.com/wchar_t-gdb.htm