comando GDB para imprimir o endereço de início do buffer (stack)

1

Para o depurador gdb

(gdb) p &buffer

Este comando é usado para imprimir o conteúdo da inicialização do buffer (pilha) ou imprimir o endereço?

Se é conteúdo, como imprimir o endereço?

    
por Li Dong 11.03.2018 / 09:18

1 resposta

3

Depende de qual tipo o buffer é.

O mais provável buffer é um ponteiro para o início do buffer. A declaração de estilo C para ele pode ser struct stackElement *buffer; ou algo semelhante (observe o asterisco!). Nesse caso:

  • p &buffer imprime o endereço onde o próprio ponteiro está armazenado (por exemplo, "o endereço do endereço do buffer")
  • p buffer deve imprimir o valor da variável buffer pointer, que é o endereço do buffer.
  • p *buffer deve imprimir o conteúdo do buffer.

Se buffer for algum tipo de estrutura e não um ponteiro (por exemplo, a declaração C pode ser struct stackElement buffer; sem asterisco), então:

  • p &buffer imprime o endereço onde a estrutura está, ou seja, o endereço do buffer
  • p buffer imprime o conteúdo dessa estrutura (= se for uma pilha, provavelmente o primeiro elemento da pilha)
  • p *buffer é um erro.
por 11.03.2018 / 10:03

Tags