Quero imprimir o comprimento total de uma string C no GDB. Por padrão, está sendo abreviado, como forço o GDB a imprimir a string inteira?
376
set print elements 0
set print elements
number-of-elements
Defina um limite para quantos elementos de uma matriz o GDB imprimirá. Se o GDB estiver imprimindo uma matriz grande, ele interromperá a impressão após a impressão do número de elementos definidos pelo set print elements
comando. Esse limite também se aplica à exibição de strings. Quando o GDB é iniciado, esse limite é definido como 200. Definir o número de elementos como zero significa que a impressão é ilimitada .
Enquanto o seu programa estiver em bom estado, você também pode
call (void)puts(your_string)
imprimi-lo no stdout. O mesmo princípio se aplica a todas as funções disponíveis para o depurador, na verdade.fonte
Existe uma terceira opção: o comando x, que permite definir um limite diferente para o comando específico em vez de alterar uma configuração global. Para imprimir os primeiros 300 caracteres de uma sequência, você pode usar
x/300s your_string
. A saída pode ser um pouco mais difícil de ler. Por exemplo, imprimir uma consulta SQL resulta em:fonte
x
!O
printf
comando imprimirá as seqüências completas:fonte
set print elements nnn
limite e não imprimirá a sequência completa, a menos que você o façaset print elements 0
.Apenas para completá-lo:
Você deve fornecer um comprimento, mas pode alterar a representação dessa sequência:
Isso pode ser útil se você deseja depurar por seus valores
fonte
Usar
set elements ...
nem sempre é o melhor caminho. Seria útil se houvesse uma distintaset string-elements ...
.Então, eu uso essas funções no meu .gdbinit:
Ressalvas:
fonte