Заморозить все темы на точке останова в VS2010 - PullRequest
10 голосов
/ 04 февраля 2010

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

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

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

Ответы [ 4 ]

12 голосов
/ 02 июля 2011

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

Презентация

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

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

Особенности

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

Проверьте это здесь, в Галерее , на официальной странице или в хранилище Codeplex .

2 голосов
/ 14 апреля 2011

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

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

2 голосов
/ 04 февраля 2010

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

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

1 голос
/ 02 июля 2011

Джон Роббинс написал в блоге , как это сделать с помощью макроса Visual Studio .

...