Подтвердить что ты не робот

Как заставить Visual Studio оставаться в одном потоке при отладке?

Когда я отлаживаю Visual Studio, по какой-то причине при отладке определенного потока Visual Studio просто перескакивает к различным потокам.

Как мне изменить поведение, чтобы он сидел в одном потоке?

4b9b3361

Ответ 1

Когда вы говорите: "при отладке определенного потока визуальная студия будет просто случайно перемещаться в разные потоки", вы имеете в виду, что при прохождении кода по конкретному потоку вы можете попасть в точку останова в другом потоке?

Если это так, вы можете использовать окно "Thread" для "замораживания" потоков, отличных от тех, которые вам интересны при отладке:

Из http://msdn.microsoft.com/en-us/library/w15yf86f.aspx:

В окне "Темы" вы можете установить активная нить. Кроме того, вы может замораживать или оттаивать выполнение каждый отдельный поток. Замораживание предотвращает выполнение потока. Оттаивание позволяет продолжить. Два вертикальные синие полосы идентифицируют замороженные нить.

Поддержка этого может зависеть от версии Visual Studio, которую вы имеете (например, я не думаю, что версии Express поддерживают окно Thread).

Ответ 2

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

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

В любом случае, единственный способ предотвратить это - открыть окно Threads, щелкнуть правой кнопкой мыши по всем другим потокам, чем текущий, и выбрать freeze. (Запомните thaw их снова после этого)

Ответ 3

Все ответы здесь говорят о замораживании потоков, но это становится громоздким, когда их много, и вы не знаете, какой из них нужно заморозить. Я нашел более простой трюк.

Когда точка останова попадает в поток i и говорит j, k и т.д. время, затем временно отключите точку останова и начните отладку потока i. Я вижу, что отладчик не перескакивает на другие потоки, так как для этих потоков нет точки останова, чтобы проникнуть. Включите контрольную точку, когда вы закончите отладку.

Ответ 4

Как правило, я замораживаю другие потоки, щелкнув правой кнопкой мыши на панели потоков. Я не знаю, разумно это или нет.