it-roy-ru.com

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

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

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

16
Embedded_Mugs

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

(MyType[128])myArray

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

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

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

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

18
cubuspl42

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

(MyType(*)[128])myArray

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

25
Miguel Alonso Jr

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

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

1
陳 力