6

Я видел это в моем Visual C# 2008 RSS поток навеки:Как сделать: создать точку останова с помощью условий? [C# Экспресс]

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

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

+0

Это было в Visual Studio целую вечность. Поскольку VS2005 по крайней мере; возможно, VS2003. Я вполне уверен, что это было не в Visual Studio 6;) – Dan

+0

Как насчет в экспресс-редакции? – Kredns

+2

Понятия не имею, боюсь, я не заметил, что вы использовали это. Возможно, вы захотите пометить свой вопрос с помощью «visual studio express»? – Dan

ответ

19

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

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

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

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

+0

Голосование за использование «#if DEBUG ...#endif "(я собирался прокомментировать принятое решение по этому поводу). – Alconja

+0

Я должен был принять ваш ответ, потому что отсутствие обновления в Relster's. – Kredns

4

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

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

+1

Когда я нажимаю правой кнопкой мыши точку останова, которую я вижу, это: удалить точку останова, отключить точку останова. – Kredns

+1

Хммм ... вы можете использовать экспресс-издание? – Alconja

+1

yerp его отсутствует в экспресс –

1

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

System.Diagnostics.Debugger.Break(); 

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

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

+0

Я удалил свой ответ из-за перекрытия, но вы должны упомянуть, что VS 2008 express не имеет встроенной поддержки условных точек останова. –

+0

@Sam Saffron, вы должны отредактировать его ответ, чтобы стать всеохватывающим ответом. – mmcdole

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