Você gostou do post,
concorda com minhas ideias,
quer mais?
Curta o post no final da página, use o Disqus, compartilhe em sua rede social. Isso me ajuda e motiva, trazendo cada vez mais conhecimento, resumido e prático. Se quiser contribuir financeiramente, assim posso comprar mais placas e fazer outros tutoriais, use o PIX: consultoria@carlosdelfino.eti.br Obrigado.

Qual programa não usa um Array, quase todos não é? e como então fazer para depurar um programa em C ou C++ usando o GDB e imprimir adequadamente o conteúdo de Arrays?

É muito simples imprimir o conteúdo de arrays no GDB. Antes de tudo é preciso lembrar que as variáveis que armazenam um Array são ponteiros, portanto deverá tratá-los assim ou lembrar de indicar que são Arrays.

É preciso também conhecer o tamanho do Array para não se perder dados ou imprimir lixo a mais.

Veja a pequena parte de um programa em C:

int main(){
   int *a;
   int b[3] = {1,2,3};
   a = b;

   int *c[3] = {a, b, 0};
   int **d = c;
   return 0;
 }

Ao depurar este programa, no momento que desejar ver o conteúdo da variável a você deve lembrar que ela é um ponteiro e sendo um array que tem 3 posições, portanto use o comando print da seguinte forma:

(gdb) print *a@3
 $4 = {1, 2, 3}

Você pode também fazer um casting durante a depuração:

(gdb) print (int [3]) *a
 $8 = {1, 2, 3} 

fonte:

http://the-hydra.blogspot.com.br/2011/01/gdb-trick-for-printing-array-content.html

Como todos sabem uso estes artigos em meu site para anotar aquilo vou aprendendo, quando consolido um conhecimento de forma a se tornar útil, ofereço como consultoria e tutoria, assim contribuo para que outros possam crescer também.

Clique aqui para saber em detalhes "Porque cobro pelo meus serviços".


Carlos Delfino

Escrito por:

Desenvolvedor e consultor para projetos com Microcontroladores e Mobile

Google LinkedIn Digg Reddit StumbleUpon

Atualizado em