Eclipse-C ++ - отладка: посмотрите содержимое массива - PullRequest
23 голосов
/ 01 декабря 2009

Можно ли увидеть содержимое динамически размещенного массива, например:

int *array = new int[dimension];

Я вижу только значение указателя.

edit: только что нашел опцию «показывать как массив», но мне всегда нужно вручную вводить размер массива. Можно ли получить это автоматически?

Ответы [ 4 ]

40 голосов
/ 22 января 2012

в eclipse, чтобы увидеть содержимое динамически распределенного массива (для всех, кто сталкивается с этим вопросом),

  1. убедитесь, что вы находитесь в перспективе отладки.ищите окно "переменных".если вы его не видите, нажмите «окно»> «показать представление»> «переменные».
  2. щелкните правой кнопкой мыши переменную массива
  3. щелкните «Показать как массив»
  4. eclipse не знает, насколько велик ваш массив, поэтому введите 0 для начального индекса и количество элементов, которые вы динамически выделяли для длины.

choose display as array in eclipse

9 голосов
/ 08 мая 2014

Если вы хотите избежать повторного выполнения «Отображать как массив», откройте вкладку «Выражения» и добавьте выражение (*array@dimension). Не уверен, зачем нужны круглые скобки. Без них вы получите ошибку.

5 голосов
/ 20 мая 2014

На вкладке «Выражения», если вы делаете то, что отметил cleong, и набираете (*array@dimension), тогда вы можете динамически установить размер отображаемого массива. Это работает даже тогда, когда вам нужно другое выражение, чтобы получить его.

Допустим, у вас есть переменная x, которая содержит размер вашего массива, вы набираете (*array@x), и она будет использовать содержимое x в качестве измерения.

"x" также может быть такими, как содержимое структуры или разыменование указателя и т. П., Т. Е.

(*array@SomePtrToStruct->x) 

работает просто отлично.

3 голосов
/ 02 декабря 2009

только что нашел опцию «отображать как массив», но мне всегда нужно вручную вводить размер массива. Можно ли получить это автоматически?

Это хорошо. Я бы придерживался этого. Автоматическое получение массива невозможно в общем случае в C или C ++, хотя, безусловно, в некоторых тривиальных случаях это может быть сделано (но, вероятно, нет, пока - функции должны быть реализованы до того, как они существуют, чтобы перефразировать Raymond Chen).

...