Ответ 1
Не то, что я знаю, однако вы можете отключить свою точку останова во время перехода.
Когда я беспокоюсь о запутывании многих потоков, я стараюсь просто открыть окно потоков и сохранить примечание о потоке.
Я использую VS2010 Beta 2 для отладки некоторого многопоточного кода. Любовь параллельных стеков и т.д.
У меня есть вопрос, хотя: у меня есть точка останова, установленная в методе, который может вызываться несколькими потоками. Как только я ударил точку останова, я действительно хочу сосредоточиться на потоке, который вызвал эту точку останова. Однако, когда я нажимаю "шаг", VS часто переключается на другой поток (скажем, я остановился на потоке 1, но тем временем поток 2 попадает в мою точку останова).
Я знаю, что я могу вручную заморозить потоки в окне потока. Есть ли способ сделать это автоматически - в основном, как только я ударил точку останова, заморозить все потоки, кроме текущего, пока не нажму F-5?
Не то, что я знаю, однако вы можете отключить свою точку останова во время перехода.
Когда я беспокоюсь о запутывании многих потоков, я стараюсь просто открыть окно потоков и сохранить примечание о потоке.
Я только что выпустил расширение Visual Studio 2010, которое делает именно то, что вы ищете. И это бесплатно:).
Представление
Это расширение Visual Studio 2010 добавляет два ярлыка и кнопки панели инструментов, которые позволяют разработчикам легко сфокусироваться на отдельных потоках при отладке многопоточных приложений.
Это резко уменьшает необходимость вручную перейти в окно Threads, чтобы заморозить/оттереть все потоки, но тот, который необходимо соблюдать, и, следовательно, помогает повысить производительность.
Функции
Ограничить дальнейшее выполнение только текущим потоком. Заморозит все остальные потоки. Ярлык: CTRL + T + T или кнопка "Снежинка". Переключитесь на следующий единственный поток (на основе ID). Изменит текущий поток и заморозит все остальные потоки. Ярлык: CTRL + T + J или кнопка Далее.
Отметьте здесь, в Галерее, на официальной странице или репозиторий Codeplex.
Если вы загрузите окно Threads из Debug- > Windows- > Threads. После того, как вы нажмете точку останова, вы можете выбрать все потоки и нажать "Заморозить потоки", после чего вы сможете возобновить активный поток, выбрав его и выбрав "Оттепель".
Это позволит выполнять только текущий поток в отладчике.
Существует сообщение блога Джона Роббинса о том, как это сделать с макросом Visual Studio.