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