Ответ 1
Вы можете использовать синтаксис gdb как выражения:
- Используйте меню Run/Show/Expressions..., чтобы отобразить окно выражений
- Введите
'*velocity @ 100'
в нижней части окна (Expression:)
Скажем, у меня есть массив в С++:
double* velocity = new double[100];
Используя командную строку GDB, я могу просмотреть этот массив с помощью команды:
> print *velocity @ 100
и он напечатает красиво отформатированный список всех двойных значений внутри массива.
Однако при использовании отладчика Xcode наибольшее его действие будет рассматривать это как указатель на одно двойное значение и отображать скорость [0] в списке переменных.
Это делает его реальной PITA для отладки программ, содержащих большой динамически выделенный массив. Должен быть какой-то способ рассказать Xcode "Это указатель на массив длиной 100", и он отображает предмет как таковой. Кто-нибудь знает, что это такое?
Вы можете использовать синтаксис gdb как выражения:
'*velocity @ 100'
в нижней части окна (Expression:)Я думаю, что мой ответ будет хорошим дополнением к старому.
Новые версии Xcode используют отладчик lldb
как инструмент по умолчанию вместо 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
Нет, к сожалению, GUI ограничен, и вам нужно будет хорошо сочетать магию GDB, чтобы все было сделано.
Начиная с Xcode 10, вы можете щелкнуть правой кнопкой мыши velocity
, выбрать "Показать значение как...", а затем "Пользовательский тип". Затем приведите его к (double(&)[100]) *velocity
и отобразите массив в графическом интерфейсе.