Cómo imprimir wstring en gdb
(3)
Supongamos que tienes una std::wstring str
. Lo siguiente debería funcionar en gdb:
call printf("%ls", str._M_data())
(La opción -l en printf lo convierte en una cadena larga, y creo que necesita la sentencia " call
" porque a la versión estándar de gdb no le gusta esa opción).
¿Cómo puedo imprimir wstring en gdb?
call printf %ls
solo funciona a veces, pero para que funcione en gdb 6.3 necesita el vaciado de espacio void
y el avance de línea /n
muestran aquí:
call (void)printf("/"%ls/"/n",str.c_str())
aquí hay un comando más confiable que puede poner en su .gdbinit que también muestra los puntos de código que no son 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
simplemente ingrese wc
(abreviatura de wc_print
) con std::wstring
o wchar_t*
.
Más detalles en http://www.firstobject.com/wchar_t-gdb.htm