Практическое руководство. Переход в пошаговый режим выполнения "Только мой код"
Этот раздел применим к:
Выпуск |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
Только управляемый код |
||||
Pro, Premium и Ultimate |
Только управляемый код |
Иногда во время отладки может потребоваться отображать только код, созданный самостоятельно, и пропускать другой код, например, системные вызовы. Для этого существует возможность отладки в режиме "Только мой код". В режиме "Только мой код" код, написанный не пользователем, скрывается и не отображается в окнах отладчика. При пошаговом выполнении отладчик проходит любой код, написанный не пользователем, но не останавливается в нем.
Чтобы отличить пользовательский код от другого кода, отладчик рассматривает три элемента: DBG-файлы, PDB-файлы и оптимизацию.
В стандартной отладочном построении оптимизация отключена, а отладочные символы создаются для всех модулей. При запуске отладочного построения эти модули считаются пользовательским кодом. Если вызвать библиотечную функцию, оптимизированную и без отладочных символов, она не будет пользовательским кодом. В режиме "Только мой код" выполнение не останавливается в точках останова в коде библиотек, который обычно не интересует вас с точки зрения отладки. В окне "точки останова" они появятся со значком "Отключенная точка останова".
Чтобы просматривать весь код и останавливаться на всех точках останова, можно отключить режим "Только мой код", воспользовавшись диалоговым окном Параметры.
Три атрибута влияют на то, что отладчик считает "моим кодом": DebuggerNonUserCodeAttribute говорит отладчику, что применяемый код не является "моим кодом". DebuggerHiddenAttribute скрывает код от отладчика, даже если режим "Только мой код" включен. DebuggerStepThroughAttribute указывает отладчику выполнить в пошаговом режим код, к которому он применяется, а не осуществлять шаг с заходом в этот код.
Если включен режим "Только мой код", можно выбрать Прервать в меню Отладка и остановить выполнение в месте, где нет собственного кода пользователя. В этом случае код не отображается. Кроме того, если выбрана команда Шаг, она переведет пользователя на следующую строку пользовательского кода.
Программные инструкции прерывания, такие как операторы Visual Basic Stop, обрабатываются по-другому. Отладчик всегда останавливается на этих инструкциях, даже если включен режим "Только мой код". В этом случае код, не написанный пользователем, показывается, а не скрывается, но пошаговое выполнение будет по-прежнему переводить пользователя на следующую строку пользовательского кода.
Примечание
Режим "Только мой код" не поддерживается для проектов устройств.
Чтобы включить или отключить режим отладки "Только мой код"
В меню Сервис выберите пункт Параметры.
В диалоговом окне "Параметры" откройте узел Отладка и выберите Общие.
Установите или снимите флажок Включить режим "Только мой код".