В отладчике Clion, как мне показать все содержимое массива int

Сейчас он показывает только первый элемент массива, но я хочу визуализировать все элементы в массиве. Я думаю, что Clion использует GDB.

EDIT: Я имею в виду конкретно массивы в куче. Массивы в стеке могут быть визуализированы.

Ответ 1

К сожалению, CLion в настоящее время не поддерживает такую ​​функцию. Как предложено сотрудником JetBrains, вы можете использовать обходной путь. В окне "Оценка/часы" используйте следующее выражение:

(MyType[128])myArray

Вы можете использовать произвольный размер массива; что сработает для вас.

Если массив хранится в переменной void *, вам нужно сделать что-то более сложное:

(MyType[128])*(char*)myArray

Продвиньте эту проблему, чтобы увеличить вероятность получения реального решения. Вы делаете это, щелкнув значок маленького пальца вверх в правой части страницы.

Ответ 2

Ответ на cubuspl42 работает для GDB. Но если вы используете Mac с использованием LLDB в качестве отладчика, правильный метод

(MyType(*)[128])myArray

Надеюсь, это поможет!

Ответ 3

Вы можете использовать шаблон и ссылку:

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

Ответ 4

Любой синтаксис, понятный базовому отладчику, на самом деле должен работать. Например, в случае GDB вы можете использовать *[email protected], где array может быть любым указателем, а size может быть любым (положительным) целочисленным выражением, и оба могут включать переменные, вызовы функций, регистры, все, что понимает GDB, Примерно так будет, например:

*((int*)$rsp - 0x100)@get_size(data)