День сто двадцать седьмой. #TipsAndTricks

27. Точка прерывания на автоматически реализованном свойстве

Если в вашей компании по финансовым, юридическим, религиозным или каким-то иным причинам используют старую версию Visual Studio, то вам порой приходится сталкиваться с проблемами, давно решёнными в более современных версиях.

Проблема (в VS версии 2013)

C# поддерживает автоматически реализованные свойства. Во время отладки иногда полезно устанавливать точки останова при обращении к свойству, особенно когда оно вызывается из нескольких мест, и утомительно находить их все и ставить множество точек останова. Итак, рассмотрим следующий пример:

namespace MyName {

class Program {

static bool MyProperty {

get; // строка 4

set; // строка 5

}

static void Main() {

if ((new System.Random()).Next(3) == 1)

MyProperty = true; // строка 9

else

MyProperty = false; // строка 11

System.Diagnostics.Debugger.Break(); // строка 12

}

}

}

Если вы попытаетесь установить точку останова на строках 4 или 5, то, к сожалению, точка останова переместится в ближайшее подходящее место, а не останется на этой строке.



Решение для VS2013 – функциональные точки останова

Создайте новую функциональную точку останова (Ctrl + B), как показано на рисунке ниже (в этом случае просто set_MyProperty также будет работать). Теперь, когда вы нажмёте F5, отладчик остановится на строке 9 или 11, в зависимости от того, кому повезёт вызвать метод-мутатор свойства.



В VS версии 2015 и позже это просто работает. Ставьте точку останова на строках 4 или 5, и отладчик остановится на этой строке. Чтобы перейти к вызывающему коду, просто щелкните на следующую строку в стеке вызовов.



Источник: https://devblogs.microsoft.com/devops/set-breakpoints-on-auto-implemented-properties-with-visual-studio-2015/