Как распечатать wstring в GDB - PullRequest
       27

Как распечатать wstring в GDB

9 голосов
/ 20 сентября 2008

Как мне распечатать wstring в gdb?

Ответы [ 3 ]

8 голосов
/ 10 сентября 2009

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

1 голос
/ 20 сентября 2008

Предположим, у вас есть std::wstring str. В gdb должно работать следующее:

call printf("%ls", str._M_data())

(опция -l в printf делает ее длинной строкой, и я считаю, что вам нужен оператор "call", потому что обычному gdb printf эта опция не нравится.)

0 голосов
/ 20 сентября 2008

Я провел некоторое исследование, и это GDB PR716 , PR1998 , PR2264 . По-видимому, это часто запрашиваемая функция, которая еще не реализована.

...