Visual Studio 2008 не останавливается на всех моих точках разрыва и часто «убегает», когда я переступаю через утверждение, почему? - PullRequest
3 голосов
/ 21 января 2010

Я часто нахожу, что точка останова в строке кода, которую я знаю, выполняется не правильно.
Также часто « убегает », когда я делаю « шаг за » или « шаг в » и т. Д.

подробности.

  • Microsoft Visual Studio 2008 Версия 9.0.30729.1 SP
  • Microsoft .NET Framework версии 3.5 с пакетом обновления 1
  • Код представляет собой смесь VB.NET и C # с большей частью кода в VB.NET.
  • Есть много активных тем
  • Многие исключения генерируются программным обеспечением.
  • Microsoft (R) Windows (R) Server 2003, Standard Edition

Некоторые другие члены команды видели эту проблему в разное время, но с одной стороны знают, как они ее исправили!


Обновление, думает, что за все полезные ответы они помогут другим людям, которые столкнулись с этой проблемой.

Оперативное исправление KB957912 - Обновления для отладки и точек останова Visual Studio 2008 SP1

Microsoft выпустила обновления для Microsoft Visual Studio 2008 с пакетом обновления 1 (SP1) компоненты отладчика. Эти обновления в основном решать проблемы, которые возникают с степпинг и с точками останова.

Кажется, это решило проблемы для меня.

Ответы [ 7 ]

4 голосов
/ 21 января 2010

Мало вещей:

  1. Сначала очистите раствор, используя «чистый раствор».
  2. Запустить программу в режиме отладки
  3. Удалите все точки останова и поместите точку останова там, где вы собираетесь проверять.
  4. Если это многопоточность, вы можете получить остановку из-за точки останова в какой-то момент или из-за останова в других частях кода
  5. Убедитесь, что ваш код доступен там, где вы поставили точку останова. Приведенный ниже код может не вызывать разрыв точки останова в блоке else,

    если (правда)

    printf («Привет, мир»);

    еще

    printf ("Привет, мир");

Вы бы увидели, что код никогда не достигнет другой части мира hello.

Это может звучать смешно. Но закрытие решения и Visual Studio и удаление каталогов, таких как выпуск / отладка и перезапуск системы, могут помочь.

2 голосов
/ 21 января 2010

Возможно, это глупый вопрос, и он довольно маловероятен, поскольку кажется, что ваше поведение прерывисто, но я не видел, чтобы кто-то еще задавал его - проверили ли вы, чтобы убедиться, что у вас нет никаких процедур с System.Diagnostics.DebuggerStepThrough атрибут на них установлен?

1 голос
/ 21 января 2010

Убедитесь, что ваш код и pdb-файлы синхронизированы. Возможно, вам придется очистить / восстановить решение, если это происходит.

1 голос
/ 21 января 2010

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

0 голосов
/ 21 января 2010

Оперативное исправление KB957912 - Обновления для отладки и точек останова Visual Studio 2008 SP1

Microsoft выпустила обновления для компонентов отладчика Microsoft Visual Studio 2008 SP1.Эти обновления в основном устраняют проблемы, возникающие при степпинге и попадании в точки останова.

Похоже, что это решило проблемы для меня.

0 голосов
/ 21 января 2010

Это произойдет, если вы используете темы

если нет, попробуйте пересобрать приложение

0 голосов
/ 21 января 2010

Если у вас много потоков, это может произойти, потому что несколько потоков будут вызывать разные точки останова. Так что держите окно потока открытым, чтобы увидеть, находитесь ли вы в том же потоке. Кроме того, трассировка / ведение журнала с временными метками может быть лучшим вариантом в этом сценарии, чем пошаговое выполнение кода в многопоточном приложении.

Другой сценарий, в котором это может произойти, это то, что двоичные файлы и файлы pdb не совпадают. Так что идите на полную перестройку с отключенными оптимизациями.
НТН

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