Отладка Visual Studio — я просто хочу пройтись по моей программе!

Я просто хочу пройтись по своей программе с помощью Visual Studio 2005, но когда я пытаюсь скопировать то, что показал мне мой учитель (вроде как), я начинаю проходить некоторые другие файлы, которые спонтанно появляются в моем окне. Они называются случайными вещами, такими как «xstring» и «ios», и я очень расстроен. Пожалуйста, как мне пройти через мой код?


person Community    schedule 22.02.2009    source источник
comment
Пожалуйста, отредактируйте свой вопрос, чтобы дать краткий, полный пример метода, который вы пытаетесь выполнить, и указать, какой оператор неожиданно приводит вас к коду STL.   -  person ChrisW    schedule 22.02.2009
comment
Как человек, имеющий ту же проблему, я уточню: в ходе перехода к одному оператору часто встречаются вызовы STL, вызовы конструктора, вызовы новых операторов и т. д. на пути к функции, в которую вы действительно хотите войти. Таким образом, было бы неплохо иметь способ сообщить отладчику, чтобы он автоматически перешагивал все, от отдельных функций до функций в конкретном модуле или конкретном классе, даже когда вы используете Step Into.   -  person Stewart    schedule 18.03.2011


Ответы (4)


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

Если вы хотите избежать использования всей стандартной библиотеки, просто установите следующее правило:

10    std\:\:.*=NoStepInto

Для Visual Studio 2005 вам нужно добавить правило к следующему ключу

HKLM\Software\Microsoft\VisualStudio\8.0\NativeDE\StepOver

person Vickster    schedule 07.07.2009

Почему это происходит: вы используете объекты из стандартной библиотеки шаблонов. Некоторые из ваших операторов явно или неявно вызывают методы этих классов STL. Вы вступаете в эти методы с помощью отладчика.

Есть два способа исправить это:

  • Если вы знаете, что находитесь в статусе, который вызывает метод STL, выберите команду отладчика «Шаг вперед» (F10) вместо его команды «Шаг внутрь» (F11).

  • Если вы попали в один из этих методов по ошибке, используйте команду отладчика «Шаг вперед» (Shift-F11).

person ChrisW    schedule 22.02.2009
comment
Я пытаюсь проверить, какие значения присваиваются переменным в разделе, и, кажется, я вступаю в эти методы STL... и я слишком новичок, чтобы понять, что происходит. - person ; 22.02.2009
comment
В качестве обходного пути используйте Step Out (Shift-F11), если вы используете один из этих методов. Если вас это утешит, это немного известная проблема (т.е. не только у вас). - person ChrisW; 22.02.2009

Скорее всего, происходит то, что вы переходите к встроенным методам фреймворка. Когда это произойдет, просто нажмите «выйти», и вы вернетесь к своему собственному коду.

Вы также можете использовать "перешагнуть" для тех методов, которые, как вы знаете, встроены - конечно, рискуя переступить через методы, в которые вы хотите войти.

Я рекомендую вам обязательно размещать точки останова в каждой строке, где вы хотите проверить состояние приложения — таким образом вы можете просто использовать кнопку воспроизведения (F5).

person Tomas Aschan    schedule 22.02.2009

http://mark.michaelis.net/Blog/VisualStudioKeyboardShortcutsWrapupMSDNFlashFeb22009.aspx

По сути, вы должны использовать F10 (шаг), а не F11 (шаг), когда текущая строка кода содержит вызов не вашей функции.

person Alex Reitbort    schedule 22.02.2009
comment
Но это перешагнёт через некоторые функции, которые пользователь ХОЧЕТ использовать. Многие операторы C++ содержат смесь вызовов библиотек и вызовов функций, которые на самом деле являются частью программы. - person Stewart; 18.03.2011