VS2008 Приостановка всех потоков при достижении точки останова - PullRequest
4 голосов
/ 18 мая 2010

Должно быть, я что-то упустил .. (я привык использовать затмение)

Visual Studio 2008, кажется, приостанавливает все потоки, когда я достигаю точки останова - это нормально? Если это так, есть ли опция, которая будет только приостанавливать поток, в который попала точка останова?

Ответы [ 2 ]

2 голосов
/ 18 мая 2010

Да, это нормально для отладчика. Подумайте, что будет, если этого не произойдет. Любое значение, отображаемое отладчиком, должно считаться устаревшим в тот момент, когда оно отображалось, поскольку любой из других работающих потоков мог изменять значение из-под него.

Я не верю, что в Visual Studio есть способ прервать работу, не останавливая все потоки.

1 голос
/ 18 мая 2010

Как сказал Джаред, это нормальное поведение в VS. Однако есть некоторые вещи, которые вы можете сделать, чтобы настроить поведение, например создание условий точки останова. Я нашел статью , в которой упоминается установка условия точки останова для поиска определенного потока:

Подсказка. Разрыв только в том случае, если конкретный поток вызывает метод: Чтобы установить точку останова для каждого потока, необходимо однозначно идентифицировать конкретный поток, которому вы дали имя, с помощью свойства Name. Вы можете установить условную точку останова для потока, создав условное выражение, например "ThreadToStopOn" == Thread.CurrentThread.Name.

Вы можете вручную изменить имя потока в окне «Просмотр», просмотрев переменную «myThread» и введя для нее значение «Имя» в окне значений. Если у вас нет текущей переменной потока для работы, вы можете использовать Thread.CurrentThread.Name, чтобы установить имя текущего потока. В классе Thread также есть частная целочисленная переменная DONT_USE_InternalThread, которая уникальна для каждого потока. Вы можете использовать окно Threads, чтобы перейти к потоку, на котором вы хотите остановиться, и в окне Watch введите Thread.CurrentThread.DONT_USE_InternalThread, чтобы увидеть его значение и создать правильное выражение условной точки останова.

Вот еще несколько статей, которые описывают условия прерывания:

http://www.professionalvisualstudio.com/blog/2009/04/30/debugging-threads-in-visual-studio-with-breakpoint-conditions-and-actions/

http://www.blackwasp.co.uk/VSBreakpoints.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...