Сейчас он показывает только первый элемент массива, но я хочу визуализировать все элементы в массиве. Я думаю, что Clion использует GDB.
EDIT: Я имею в виду конкретно массивы в куче. Массивы в стеке могут быть визуализированы.
Сейчас он показывает только первый элемент массива, но я хочу визуализировать все элементы в массиве. Я думаю, что Clion использует GDB.
EDIT: Я имею в виду конкретно массивы в куче. Массивы в стеке могут быть визуализированы.
К сожалению, CLion в настоящее время не поддерживает такую функцию. Как предложено сотрудником JetBrains, вы можете использовать обходной путь. В окне "Оценка/часы" используйте следующее выражение:
(MyType[128])myArray
Вы можете использовать произвольный размер массива; что сработает для вас.
Если массив хранится в переменной void *
, вам нужно сделать что-то более сложное:
(MyType[128])*(char*)myArray
Продвиньте эту проблему, чтобы увеличить вероятность получения реального решения. Вы делаете это, щелкнув значок маленького пальца вверх в правой части страницы.
Ответ на cubuspl42 работает для GDB. Но если вы используете Mac с использованием LLDB в качестве отладчика, правильный метод
(MyType(*)[128])myArray
Надеюсь, это поможет!
Вы можете использовать шаблон и ссылку:
template<int N>
void foo1(int (&arr)[N])
{
...
}
Если вы хотите передать массив другой функции, переданная функция должна также использовать шаблон и ссылку для массива:
template<int N>
void foo2(int (&arr)[N])
{
...
}
template<int N>
void foo1(int (&arr)[N])
{
foo2(arr);
}
Этот метод позволяет вам увидеть все содержимое массива int в clion
Любой синтаксис, понятный базовому отладчику, на самом деле должен работать. Например, в случае GDB вы можете использовать *[email protected]
, где array
может быть любым указателем, а size
может быть любым (положительным) целочисленным выражением, и оба могут включать переменные, вызовы функций, регистры, все, что понимает GDB, Примерно так будет, например:
*((int*)$rsp - 0x100)@get_size(data)