2010-02-22 2 views
3

Есть ли способ получить точки останова, когда действие вызвано отладчиком Visual Studio? Например, предположим, что у меня есть следующие (я знаю, что вы не должны делать это, просто использовать его ради аргумента):Точка останова при срабатывании отладчика

public class Test 
{ 
    int _X = -1; 
    public int X { 
     get { return ++_X; } //Breakpoint here 
     set { _X = value; } 
    } 
} 

И:

static void Main(string[] args) 
{ 

     Test t = new Test(); 
     t.X = 1; //Breakpoint here 
     return; 
} 

Если пауза в контрольной точке в Main, каждый раз, когда вы наводите указатель мыши на «tX» (при условии, что у вас включена опция «Отладка» - «Включить оценку свойств и другие неявные вызовы функций») или вы оцениваете свойство в окне «Смотреть» - он увеличит свойство, но точка останова в аксессуре доступа «get» не пострадает. Повторное задание вопроса в более конкретном контексте - есть ли способ попасть в точку останова в аксессуре «get», когда оценка выполняется отладчиком?

ответ

2

После некоторых исследований по этой теме я узнал о FuncEval, и после прочтения многих вещей о FuncEval я привел следующую статью: Stop Mid Func Eval, Nested Break States от Mr. SteveJS. В статье он объяснил, что, начиная с VS2005, вы можете попасть в точку останова, вызванную FuncEval, если оценка была сделана из окна «Неверное окно» вместо окон «Часы» или «Быстрый просмотр». Так, в приведенном выше примере, ввод

?t.X 

в окне Immediate вызвало точку останова на ГЭТ аксессору быть хитом.

+0

+1. очень хорошая информация –

0

Uncheck этот вариант

Debugging ->Общие ->Шаг над Свойства и операций

взглянуть на это сообщение, а

+0

@Asad - я не вижу этого варианта; Я вижу «Шаг над свойствами и операторами (только управляемый)», но правильно ли я понимаю, что включение этого параметра просто перешагнет свойства, которые не являются желаемым результатом? Я не «ступаю», когда отладчик оценивает свойство и изменяет его значение. Простите меня, если я неправильно понял то, что вы пытались сказать. – dugas

+0

О, мужик, извините, вам нужно «UnCheck» этот вариант. Затем отладчик перейдет в свойства. Изменили ответ. –

+0

У меня был этот параметр без проверки, когда я разместил вопрос. Я не хочу шагать, я хочу поймать точку останова в аксессуре свойства. Спасибо за ввод, хотя. – dugas

Смежные вопросы