Автоматический пропуск функций STL во время пошаговой отладки в MSVC ++ 2010 - PullRequest
16 голосов
/ 17 марта 2011

Часто случается, что я отлаживаю программу шаг за шагом.Обычно я всегда использую кнопку «шаг в», чтобы остановить каждую строку в отлаживаемом разделе, и когда я думаю, что получил текущую строку, просто нажмите еще раз.

Что действительно нарушает этот рабочий процесс,однако, это библиотечные вызовы.Если есть что-то вроде вычисления длины строки, хранения карты или чего-то подобного, отладчик перейдет в какой-нибудь файл STL и продолжит там.Затем мне нужно нажать «выпрыгнуть», чтобы перейти обратно к программе, которую я смотрю.

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

Есть ли способ предотвратить отладчикот открытия исходных файлов STL?Какой-то черный список, или, может быть, даже более изящно, где-то где-то там?До сих пор я нашел параметр «только мой код», но он работает только для управляемого кода, и я работаю с собственным кодом.

Ответы [ 3 ]

12 голосов
/ 21 сентября 2011

Хороший вопрос, отладчик, постоянно вскакивающий во все, действительно является огромным замедлением и отвлечением во время отладки.К счастью, есть решение:

откройте редактор реестра, перейдите к

HKLM\SOFTWARE\Microsoft\VisualStudio\10.0\NativeDE\StepOver

(добавьте \ Wow6432Node после ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, если вы работаете на 64-битной машине, это вызывало у меня головную боль в прошлом).

Добавить новое строковое значение (REG_SZ).Имя не так важно, я использовал NoSTL для ясности и установил его значение на

std\:\:.*=NoStepInto

. Это говорит отладчику, чтобы он не входил во что-либо, соответствующее этому регулярному выражению, поэтому он пропустит каждую функцию(глобальный уровень и уровень класса) в пространстве имен std.Используя StepInto, вы можете добавлять переопределения для определенных методов, и вы все равно можете использовать контрольные точки вне курса.Также удобно добавлять некоторые ваши собственные методы, в которые часто заходят, но о которых вы знаете результат по голове.

Здесь - более подробное объяснение, Google для NoStepIntoболее разрозненная информация.

1 голос
/ 22 сентября 2017

Ответ выше, но в случае, если вы используете VisualStudio 2017 или он не работает для вас, попробуйте следующее:

C: \ Program Files (x86) \ Microsoft Visual Studio \2017 \ Community \ Common7 \ Packages \ Debugger \ Visualizers

Откройте следующий файл с помощью блокнота или чего-либо еще:

default.natjmc

идобавьте эту строку: <Function><Name>std\:\:.*</Name><Action>NoStepInto</Action></Function> «имя» означает значение ключа реестра в этом файле, а «действие» говорит само за себя.

Если вы тоже хотите добавить раздел реестра (не уверен, если это необходимо), вы найдете его здесь: \HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\VSTA\8.0\NativeDE\StepOver По крайней мере, это был путь в моем случае.Потребовался хороший час, чтобы найти их, поэтому я надеюсь, что это кому-нибудь поможет. Удалите 'Wow6432Node', если у вас 32-битный компьютер, как указано выше.

0 голосов
/ 15 февраля 2012

Вы не используете F10 / F11 / Shift + F11 ??? Это «шаг за шагом», «шаг в», «выход», и есть много других полезных. Гораздо удобнее, чем поиск кнопок, и вам никогда не придется отвлекаться от исходного кода.

Как правило, вы пользуетесь сочетаниями клавиш в Visual Studio вместо мыши. Не только для отладки, но и всего остального. Учите их, вы будете любить их! Вы, вероятно, не можете изучить их все сразу, просто выберите несколько функций, которые вы часто используете, привыкните к ним, а затем начните с другого набора. Со временем это становится второй натурой.

Извините, что это не по теме, но ваш предыдущий вопрос уже прекрасно ответил на предыдущий постер, и я подумал, что помогу с чем-то еще:)

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