Eclipse-C ++ - Depuração: ver o conteúdo de uma matriz
-
22-07-2019 - |
Pergunta
É possível ver o conteúdo de uma matriz alocada dinamicamente, como em:
int *array = new int[dimension];
Eu só ver o valor do ponteiro.
edit: acabou de encontrar o "display como uma matriz" opção, mas eu sempre tenho que digitar manualmente o tamanho da matriz. É possível conseguir que automagicamente?
Solução
no eclipse, para ver o conteúdo de uma matriz alocada dinamicamente (por qualquer outra pessoa que se depara com esta questão),
- Certifique-se que você está na perspectiva de depuração. olhar para a janela "variáveis". se você não vê-lo, clique em "janela"> "show vista"> "variáveis".
- clique direito sobre a variável array
- exibição clique como array
- eclipse não sabe o quão grande a sua matriz é, então digite 0 para o índice de início e o número de elementos que você dinamicamente alocados para o comprimento.
Outras dicas
Se você quer evitar ter que fazer várias vezes "Exibir como matriz", abra a guia "Expressões" e adicionar o (*array@dimension)
expressão. Não sei por que os parênteses são necessários. Sem eles você deseja obter um erro.
Na guia "Expressões", se fizerdes o que cleong observou e tipo (*array@dimension)
então você pode definir dinamicamente o tamanho da matriz para exibição também. Isso funciona mesmo quando você precisa de uma outra expressão para obtê-lo.
Assim que você tem um x
variável que contém o tamanho da matriz, você digita (*array@x)
e ele vai usar o conteúdo de x como uma dimensão.
"x" pode também ser coisas como conteúdo struct ou dereferences ponteiro e similares - ou seja
(*array@SomePtrToStruct->x)
funciona muito bem.
acabou de encontrar o "display como uma matriz" opção, mas eu sempre tenho que digitar manualmente o tamanho da matriz. É possível conseguir que automagicamente?
Isso é bom. Eu ficar com ela. Obtendo a matriz automaticamente não é possível no caso geral em C ou C ++, embora certamente em alguns casos triviais que poderia ser feito (mas provavelmente não é, ainda - características precisam ser implementadas antes de elas existirem, parafraseando Raymond Chen).