Замораживание всех потоков в точке останова в VS2010

Я использую VS2010 Beta 2 для отладки некоторого многопоточного кода. Любовь параллельных стеков и т.д.

У меня есть вопрос, хотя: у меня есть точка останова, установленная в методе, который может вызываться несколькими потоками. Как только я ударил точку останова, я действительно хочу сосредоточиться на потоке, который вызвал эту точку останова. Однако, когда я нажимаю "шаг", VS часто переключается на другой поток (скажем, я остановился на потоке 1, но тем временем поток 2 попадает в мою точку останова).

Я знаю, что я могу вручную заморозить потоки в окне потока. Есть ли способ сделать это автоматически - в основном, как только я ударил точку останова, заморозить все потоки, кроме текущего, пока не нажму F-5?

Ответ 1

Не то, что я знаю, однако вы можете отключить свою точку останова во время перехода.

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

Ответ 2

Я только что выпустил расширение Visual Studio 2010, которое делает именно то, что вы ищете. И это бесплатно:).

Представление

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

Это резко уменьшает необходимость вручную перейти в окно Threads, чтобы заморозить/оттереть все потоки, но тот, который необходимо соблюдать, и, следовательно, помогает повысить производительность.

Функции

Ограничить дальнейшее выполнение только текущим потоком. Заморозит все остальные потоки. Ярлык: CTRL + T + T или кнопка "Снежинка". Переключитесь на следующий единственный поток (на основе ID). Изменит текущий поток и заморозит все остальные потоки. Ярлык: CTRL + T + J или кнопка Далее.

Отметьте здесь, в Галерее, на официальной странице или репозиторий Codeplex.

Ответ 3

Если вы загрузите окно Threads из Debug- > Windows- > Threads. После того, как вы нажмете точку останова, вы можете выбрать все потоки и нажать "Заморозить потоки", после чего вы сможете возобновить активный поток, выбрав его и выбрав "Оттепель".

Это позволит выполнять только текущий поток в отладчике.