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