Вопрос

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

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

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

Это было полезно?

Решение

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

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

Другие советы

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

Презентация

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

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

Функции

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

Проверьте это Здесь, в галерее, на официальная страница или Кодеплекс репозиторий.

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top