2010-12-06 2 views
15

Я унаследовал приложение, которое запустило 100 потоков. Это делает мою отладочную жизнь чрезвычайно сложной. Есть ли способ заставить Visual Studio следовать одному потоку?Отладка многопоточного приложения

+0

Какую версию VS вы используете? VS 2008/2010 имеет средство, где вы можете отметить потоки - http://msdn.microsoft.com/en-us/library/bb385628(v=VS.90).aspx - это любая помощь? – InSane 2010-12-06 09:13:48

+0

Visual Studio 2010 – 2010-12-06 09:25:08

ответ

16

Вы пробовали использовать окно «Темы» в Visual Studio (в меню «Отладка/Windows»)?

Вы можете заморозить темы и переключаться между ними

1

Если возможно, я полагаю, что в режиме отладки можно ограничить количество потоков, которые создаются, к гораздо более управляемому числу, например, 3. Таким образом, вы можете все еще может диагностировать ошибки из-за взаимодействия между потоками, но вы не полностью заснежены.

0

Отладка многопоточных программ чрезвычайно сложна. Как только отладчик что-то делает, поведение программы полностью меняется. Также «следующий» только один поток не будет работать, чтобы найти все проблемы. Вы должны позволить всем потокам работать без каких-либо перерывов для анализа проблемы.

Так что вам нужно отлаживать, не используя VS. Как это можно сделать для приложений реального времени, проверьте мою статью CodeProject: Debugging multithreaded code in real time. Извините за предоставление ссылки, но копирование всего здесь просто слишком велико.

0

Также предложение в here только что решило мою проблему.

if you hit a breakpoint, disable it, and then begin stepping you should not stop on a different thread 
Смежные вопросы