Quiero imprimir la longitud completa de una cadena en C en GDB. Por defecto se abrevia, ¿cómo fuerzo a GDB a imprimir toda la cadena?
376
set print elements 0
set print elements
number-of-elements
Establezca un límite sobre cuántos elementos de una matriz GDB se imprimirán. Si GDB está imprimiendo una gran matriz, deja de imprimir después de haber impreso el número de elementos establecidos por el set print elements
comando. Este límite también se aplica a la visualización de cadenas. Cuando se inicia GDB, este límite se establece en 200. Establecer el número de elementos en cero significa que la impresión es ilimitada .
Mientras su programa esté en un estado sano, también puede
call (void)puts(your_string)
imprimirlo en stdout. El mismo principio se aplica a todas las funciones disponibles para el depurador, en realidad.fuente
Hay una tercera opción: el comando x, que le permite establecer un límite diferente para el comando específico en lugar de cambiar una configuración global. Para imprimir los primeros 300 caracteres de una cadena que puede usar
x/300s your_string
. La salida puede ser un poco más difícil de leer. Por ejemplo, imprimir una consulta SQL da como resultado:fuente
x
!El
printf
comando imprimirá las cadenas completas:fuente
set print elements nnn
límite y no imprimirá la cadena completa a menos que lo hagaset print elements 0
.Solo para completarlo:
Debe dar una longitud, pero puede cambiar la representación de esa cadena:
Esto puede ser útil si desea depurar por sus valores
fuente
Usar
set elements ...
no siempre es la mejor manera. Sería útil si hubiera un distintoset string-elements ...
.Entonces, uso estas funciones en mi .gdbinit:
Advertencias:
fuente