Отладчик Visual Studio 2008 - функция оценки странностей - PullRequest
1 голос
/ 02 февраля 2011

Я разрабатываю плагин для более крупного приложения и столкнулся со странной проблемой со следующим кодом.При запуске в режиме Release или в Debug без точек останова все в порядке.Но когда я ставлю точку останова где-то рядом с фрагментом ниже, я получаю ошибку.Похоже, что отладчик предварительно оценивает код внутри блоков if, вызывающих ошибку, хотя этот код фактически никогда не достигается.

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

int a = GetA(); // returns 0
if (a == 1)
{
   _manager[a - 1][ColumnName.Name] = "X"; //Manager has an indexer returning a DataRow.
}

if (a == 2)
{
   _manager[a - 1][ColumnName.Name] = "Y";
}

Когда я отключил «Включить оценку свойства идругие неявные вызовы функций "в Сервис-> Параметры-> Отладка работали отлично.У вас есть идеи, как обойти это?Мне не нужны эти сообщения об ошибках, но я также не хочу терять удобство оценки отладчика.

[ПРАВИТЬ] Я переписал описание.

[ОБНОВЛЕНИЕ] Я временно изменил код внутри индексатора, чтобы сгенерировать исключение, которое было связано с делегированием события на верхний уровень обработки ошибок, и это помогло.Отладчик VS проглотил исключение, поэтому все побочные эффекты прекратились (никакие окна сообщений не отображались слоем обработки ошибок)

Так что вопрос:

Есть ли третий вариант, кроме:

1) Постоянный переход от всплывающего события на верхний уровень к исключению

2) Снятие отметки «Включить оценку свойства и другие неявные вызовы функций»

1 Ответ

1 голос
/ 23 апреля 2011

Контролируете ли вы реализацию класса, экземпляром которого является _manager? Вы пытались поместить атрибут [DebuggerBrowsable (Never)] на него? Следует скрыть это свойство от отладчика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...