Как мне: создать точку останова, используя условия? [C # Экспресс] - PullRequest
6 голосов
/ 23 июня 2009

Я уже давно вижу это в своем RSS-канале Visual C # 2008:

http://lincolnfair.net/oldLincolnFair/mad.jpg

Я почти уверен, что это только функция VS 2010, но мне было интересно, есть ли возможность повторить это в VS 2008?

Ответы [ 3 ]

19 голосов
/ 23 июня 2009

Как и у @Relster, у меня есть фрагмент кода со следующим

#if DEBUG
    if( node.Name == "Book" )
        System.Diagnostics.Debugger.Break();
#endif

Где node.Name == "Book" изменяется в зависимости от состояния, которое я хочу проверить. Оболочка #if DEBUG гарантирует, что проверки никогда не будут освобождать код.

Это также намного быстрее, чем использование условных точек останова в Visual Studio. Когда вы используете встроенную условную визуальную студию bp, нужно взломать приложение, приостановить все потоки, оценить выражение и определить, истинно ли оно каждый раз, когда оно достигает точки останова. В узком цикле это может быть разницей между почти полной производительностью и выполнением при сканировании.

4 голосов
/ 23 июня 2009

Вы можете сделать это и в VS 2008.Я уверен, что есть много способов сделать это, но один из них - щелкнуть правой кнопкой мыши на красной точке на полях существующей точки останова и выбрать condition..., а затем просто дать ей условие, которое оценивается как bool, и этосломается только если это правда.Условный оператор должен иметь доступ ко всему, что находится в области действия в строке, где установлена ​​точка останова.

В этом контекстном меню также есть другие параметры, которые позволяют вам фильтровать то, что вызовет разрыв (например, только определенные потоки), прерывание в зависимости от того, сколько раз была достигнута точка останова, запуск макросов при достижении точки останова и т. д.

1 голос
/ 23 июня 2009

Другой способ сделать это - создать свои собственные условия и позвонить по номеру:

System.Diagnostics.Debugger.Break(); 

Хотя это может быть не так сложно, как в VS2010 способ установки точек останова, вы можете получить тот же эффект с минимальными затратами кода. Просто не забудьте взять эту штуку при создании кода релиза.

Примечание. В VS2008 и VS2005 вы можете установить условную точку останова, установив обычную точку останова (F9 или двойной щелчок в желобе), а затем щелкнув правой кнопкой мыши по этой точке останова, чтобы установить «условие ...». Возможность установки условных контрольных точек НЕ доступна в VS2008 Express Edition.

...