2008-09-19 2 views

ответ

1

Предположим, у вас есть std::wstring str. Следующие должны работать в БГД:

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

(Опция -l в Printf делает длинную строку, и я полагаю, вам нужно «call» заявление, потому что обычный GDB Printf не нравится этот вариант.)

0

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

8

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

Смежные вопросы