> For the complete documentation index, see [llms.txt](https://skkv-itmo.gitbook.io/c-cpp-cookies/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://skkv-itmo.gitbook.io/c-cpp-cookies/debug/breakpoints/conditional-breakpoint.md).

# Условные точки останова / Conditional breakpoint

Условные точки останова поддерживают задание различных условий, при которых они будут активны.

{% tabs %}
{% tab title="Visual Studio" %}
Условие может состоять из условного выражения (*conditional expression*), счётчика обращений (*hit count*) и фильтра (*filter*):

* *conditional expression* может быть задано в двух режимах: `is True` (когда условие выполняется) и `when changed` (когда условие изменяет своё значение)
* *hit count* можно использовать как счётчик события срабатывания точки останова
* *filter* задаёт ограничения на точку останова, сделав ее срабатывание возможным лишь на определенных устройствах или в определенных процессах или потоках.

Настройка уже существующей точки останова: наведите указатель мыши на символ точки останова, щелкните значок *Параметры*, а затем в поле *Condition* введите Ваше условие.

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

Создать изначально условную точку останова:

* Щелкните правой кнопкой мыши в крайнем левом поле рядом со строкой кода и выберите в контекстном меню пункт **Вставить условную точку останова**.
* В поле введите условие, как Вы вводили при настройке выше.

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

{% tab title="CLion " %}
Условные точки останова в CLion указываются в отдельном параметре настройки отдельного Breakpoint'а. Этот параметр используется для указания условия, которое проверяется каждый раз при достижении данной точки. Если условие оценивается как истинное, выполняются выбранные действия. В противном случае точка останова игнорируется.

Обратите внимание, что *результат выражения* берется из оператора `return`. Когда такого оператора нету, то результат берется из *последней строки кода*.

По умолчанию, в CLion горячей клавишей для открытия окна настроек точек останова является **`CTRL`** + **`SHIFT`** + **`F8`** - выберите нужный Breakpoint, поставьте галочку `Condition` и ниже пропишите условие.

<figure><img src="https://4112636200-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FKMqUSFKgvT06FCJhm51b%2Fuploads%2Fgit-blob-1769f178838d8460c18ac3fbb328fec9f9a68caf%2Fclion-conditional-breakpoint-first-way.png?alt=media" alt=""><figcaption></figcaption></figure>

Другой, альтернативный метод: создайте точку останову, нажмите на неё ПКМ и в поле `Condition` впишите Ваше условие.

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