2008-09-19 18 views

Respuesta

1

Supongamos que tiene std::wstring str. Lo que sigue debe trabajar en GDB:

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

(la opción -l en printf lo convierte en una cadena larga, y creo que se necesita el "call" declaración porque el BGF printf ordinaria no le gusta esa opción.)

0

Hice algunas investigaciones, y esto es gdb PR716, PR1998, PR2264. Aparentemente esta es una característica solicitada con frecuencia que aún no se implementó.

8

call printf %ls sólo funciona a veces, pero para conseguir que funcione en absoluto en GDB 6.3 necesita el elenco void y avance de línea \n se muestra aquí:

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

aquí es un comando más fiable que puede poner en su. gdbinit que también muestra que no son ASCII puntos de código:

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

acaba de entrar wc (abreviatura de wc_print), ya sea con un std::wstring o wchar_t* .

Más información en http://www.firstobject.com/wchar_t-gdb.htm