# Локальные переменные / Locals

## Просмотр локальных переменных

Текущие значения переменных на шаге исполнения кода обычно можно посмотреть в разделе переменных.

{% tabs %}
{% tab title="Visual Studio" %}
По умолчанию, в Visual Studio сочетанием клавиш для открытия раздела локальных переменных является **`ALT`** + **`4`**.

Существует также альтернативный вариант:

<figure><img src="https://4112636200-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMqUSFKgvT06FCJhm51b%2Fuploads%2Fgit-blob-7abc67a7ec514a25cef166fcd40ef9c00212d4e3%2Fvs-open-locals.png?alt=media" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="CLion" %}
По умолчанию, в CLion при запуске отладки окно просмотра локальных переменных открывается автоматически в **`Debug`** - **`Debugging`** - **`Variables`**.

<figure><img src="https://4112636200-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMqUSFKgvT06FCJhm51b%2Fuploads%2Fgit-blob-c36d5c3d6f54a543335287332cd707b17f00ffaf%2Fclion-open-locals.gif?alt=media" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Редактирование локальных переменных

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

Например, в Visual Studio это выглядит следующим образом:

<figure><img src="https://4112636200-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMqUSFKgvT06FCJhm51b%2Fuploads%2Fgit-blob-ea6874e52a29e5a45a1b4f557c89c8fc2a165dff%2Fclion-edit-locals.gif?alt=media" alt=""><figcaption></figcaption></figure>

## Расчёт значений выражений во время отладки / Evaluate calculation variables in debugging

Если в процессе отладки возникает ситуация, когда нужно вычислить результат выражения (например, вычисление нового значения переменной), то вместо вместо вычисления на листочке, в уме или через заведение промежуточных переменных можно во время отладки поставит точку останова в нужном месте и выделить курсором выражение.

В появившейся контекстной подсказке / окне подсчёта будет значение выражения.

{% tabs %}
{% tab title="Visual Studio" %}
Visual Studio позволяет закреплять всплывающие подсказки (pinned tooltip), чтобы не выделять код каждый раз.

<figure><img src="https://4112636200-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMqUSFKgvT06FCJhm51b%2Fuploads%2Fgit-blob-7c166d0f0efba86cd60d03c7b74866f3e3922ef3%2Fvs-evaluate-locals.gif?alt=media" alt=""><figcaption></figcaption></figure>
{% endtab %}

{% tab title="CLion" %}
В CLion окно **`Evaluate`** будет поверх кода всё время и пересчёт значения выражения происходит по нажатию на кнопку `Evaluate`.

<figure><img src="https://4112636200-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMqUSFKgvT06FCJhm51b%2Fuploads%2Fgit-blob-23d3c8147e97365579c50a2ebedea2dd4492a3c2%2Fclion-evaluate-locals.gif?alt=media" alt=""><figcaption></figcaption></figure>
{% endtab %}
{% endtabs %}

## Контрольные значения / Watch

Если из списка переменных при отладке вас интересует лишь небольшая часть, то такие переменные можно выделить в отдельную категорию – *Watch*. Переменные, помещённые в Watch остаются в этом списке и после завершения сеанса отладки. В Watch также можно добавлять выражение, которое будет пересчитываться при обновлении переменных.

{% tabs %}
{% tab title="Visual Studio" %}
По умолчанию, в Visual Studio сочетанием клавиш для открытия окна Watch в Visual Studio является **`CTRL`** + **`ALT`** + **`W`**, `{1; 4}`.

В watch переменные автоматически не добавляют, их нужно самостоятельно перетащить/вписать в соответствующее поле.

Пример просмотра значения в переменной int и переменной типа char\*\[]:

<figure><img src="https://4112636200-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMqUSFKgvT06FCJhm51b%2Fuploads%2Fgit-blob-c7137b0790f47dcfd3b5a4712a99e775b217bb52%2Fwatch_vs_ffmpeg.gif?alt=media" alt=""><figcaption></figcaption></figure>

Магия, как можно просматривать одномерный массив как двумерный:

1. Добавляем переменную (для примера возьмём `float *arr`), хранящуюся наш массив в Watch.
2. Переходим в Watch.
3. Делаем `cast` указатель как двумерный: `(float(*)[5])arr,2`.
   {% endtab %}

{% tab title="CLion" %}
По умолчанию, в CLion при запуске отладки окно Watch открывается автоматически в **`Debug`** - **`Debugging`** - **`Variables`**.
{% endtab %}
{% endtabs %}
