Просмотр динамически распределенного массива с помощью отладчика Xcode?

17

Скажем, у меня есть массив в C ++:

double* velocity = new double[100];

Используя командную строку GDB, я могу просмотреть этот массив с помощью команды:

> print *velocity @ 100

, и он напечатает красиво отформатированный список всех двойных значений внутри массива.

Однако при использовании отладчика Xcode наибольшее его действие будет рассматривать это как указатель на одно двойное значение и отображать скорость [0] в списке переменных.

Это делает его реальной PITA для отладки программ, содержащих большой динамически выделенный массив. Должен быть какой-то способ рассказать Xcode «Это указатель на массив длиной 100», и он отображает предмет как таковой. Кто-нибудь знает, что это такое?

    
задан avalys 27.01.2009 в 19:53
источник

3 ответа

13

Вы можете использовать синтаксис gdb как выражения:

  1. Используйте меню Run / Show / Expressions ..., чтобы отобразить окно выражений
  2. Введите '*velocity @ 100' в нижней части окна (выражение:)
ответ дан mfazekas 28.01.2009 в 20:58
источник
26

Я думаю, что мой ответ будет хорошим дополнением к старому.

Новые версии Xcode используют lldb debugger как инструмент по умолчанию вместо gdb .

В соответствии с этой страницей :

  

С выпуском Xcode 5 отладчик LLDB становится основой для процесса отладки в OS X.

Итак, для Xcode с версии 5 и выше я использую эту команду lldb :

memory read -t int -c8 'array_name'

где:
8 - количество элементов в массиве
array_name - имя массива
int - тип массива

Результат выполнения этой команды будет примерно таким:

(lldb) memory read -t int -c8 array
(int) 0x7fff5fbff870 = 7
(int) 0x7fff5fbff874 = 6
(int) 0x7fff5fbff878 = 9
(int) 0x7fff5fbff87c = 10
(int) 0x7fff5fbff880 = 1
(int) 0x7fff5fbff884 = 8
(int) 0x7fff5fbff888 = 4
(int) 0x7fff5fbff88c = 3
    
ответ дан Alexander Myshov 01.05.2014 в 04:15
источник
0

Нет, к сожалению, GUI ограничен, и вам нужно будет хорошо сочетать магию GDB, чтобы все было сделано.

    
ответ дан Stefan Arentz 27.01.2009 в 21:13
источник