Impressão de elementos vetoriais em C via GDB
Ao depurar código C no GDB, examinar o conteúdo de um std::vector pode ser um desafio . Por exemplo, considere um std::vector
No GCC 4.1.2, a solução envolve acessar o ponteiro interno do vetor, myVector._M_impl._M_start, que aponta para o array que contém os elementos do vetor.
Para imprimir o vetor inteiro, use:
print *(myVector._M_impl._M_start)@myVector.size()
Para imprimir apenas os primeiros N elementos, modifique-o para:
print *(myVector._M_impl._M_start)@N
Raciocínio
Esta abordagem aproveita o comando GDB para imprimir N elementos de uma matriz começando em um dado ponteiro. Neste caso, o ponteiro é myVector._M_impl._M_start e especificamos o número de elementos a serem impressos usando myVector.size() ou a contagem desejada N.
Embora esta abordagem seja aplicável ao GCC 4.1.2 , pode variar dependendo da versão do seu compilador. Assim, para outras versões, recomenda-se a consulta da documentação pertinente.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3