Microsoft Visual Studio Debugger

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 23:04, 11 ноября 2016.

Microsoft Visual Studio Debugger — отладчик, входящий в состав всех версий Microsoft Visual Studio. Изначально этот отладчик значительную долю своего подхода и функциональности перенял от CodeView, отдельного текстового отладчика, который поставлялся с Microsoft Visual C++ версии 1.5 и ниже.

Рис. 1. Реализация работы отладчика в Visual Studio

Отладчик Visual Studio позволяет вести наблюдение за поведением программы во время выполнения и выявлять проблемы. Отладчик работает со всеми языками программирования Visual Studio и библиотеками. С помощью отладчика можно прерывать или приостанавливать выполнение программы с целью проверки кода, вычислять и редактировать значения переменных программы, отслеживать состояние регистров, просматривать инструкции, созданные из исходного кода, а также просматривать область памяти, используемую приложением.

Возможности и функции отладчика

Среди наиболее продвинутых возможностей, появившихся в последних версиях отладчика можно отметить:

  • Полную символьную и исходную интеграцию.
  • Привязка и отвязка к/от процессам.
  • Встроенная отладка программ, написанных на языках .NET и естественных языках для Windows (к примеру, вызовы из C# в C++).
  • Возможность отладки с удаленной машины.
  • Полная поддержка C++, включая шаблоны и стандартную библиотеку
  • Отладка Веб-сервисов ASP.NET.
Рис. 2. Функция отладчика Visual Studio (Edit and continue)
  • Единый стандарт для более продвинутых возможностей точек останова, включая условия, адреса, данные.
  • Множество способов представления состояния программ и данных, включая несколько окон просмотра, потоки, стек вызовов и модули. Отображение используемой библиотеки и пользовательских типов данных можно настраивать (например, для показа содержимого контейнерного класса подробнее, нежели просто показывать его основную структуру).
  • Скриптовость или возможность управлять при помощи макросов или скриптов. Может применяться любой язык, который может взаимодейстовать с COM.
  • Поддержка принципа Исправил и продолжил (Edit and continue), позволяющая изменять исходный код и его перекомпиляцию без перезапуска программы (только для 32-битных приложений).
  • Локальная и удаленная отладка хранимых процедур SQL на поддерживаемых версиях Microsoft SQL Server.

Дополнительные функции отладки

  • Просмотр свойств XAML во время отладки

Описание использования средств Динамическое визуальное дерево и Динамический обозреватель свойств.

  • Параметры отладки и подготовка

Описывает разные параметры, которые могут потребоваться для использования отладчика в различных контекстах.

  • Просмотр данных в отладчике

Описывает разные окна отладки.

  • JIT-отладка

Описание JIT–отладки, способной автоматически запускать отладчик при аварийном завершении программы во время выполнения вне Visual Studio.

  • Использование файлов дампа для отладки сбоев и зависаний приложения в Visual Studio

Описание файлов дампов, в том числе инструкции по их сохранению и открытию. Файлы дампов памяти содержат моментальный снимок состояния программы на некоторый момент времени, обычно после сбоя. Если неполадки в работе программы обнаружены на компьютере, не имеющем файлов исходного кода или файлов PDB, можно сохранить файл дампа памяти в случае сбоя и использовать его для отладки сбоя на компьютере, имеющем нужные файлы.

  • Практическое руководство. Восстановление скрытых команд отладчика

Описание способов сделать видимыми команды отладчика, скрытые параметрами IDE по умолчанию.[1]

Окна отладчика

В процессе отладки программы можно открывать большинство окон отладчика. Чтобы просмотреть список окон отладчика, установите точку останова и начните отладку. Когда точка останова будет достигнута и выполнение остановится, выберите пункт Отладка / Окна.[2]

Окно Сочетание клавиш Раздел
Точки останова CTRL+ALT+B Использование точек останова
Параметры исключений ПCTRL+ALT+E Управление исключениями с помощью отладчика
Вывод CTRL+ALT+O Окно выходных данных
Потоки GPU Практическое руководство. Использование окна потоков GPU
Задачи СCTRL+SHIFT+D, K Использование окна задач
Параллельные стеки CTRL+SHIFT+D, S Использование окна "Параллельные стеки"
Контрольное значение CTRL+ALT+W, (1, 2, 3, 4) Окна "Контрольные значения" и "Быстрая проверка"
Консоль JavaScript CTRL+ALT+V, C Краткое руководство. Отладка JavaScript с помощью консоли
Обозреватель DOM CTRL+ALT+V, D Отладка макета с использованием проводника DOM
Память CTRL+ALT+M, (1, 2, 3, 4) Окно памяти
Дизассемблированный код CTRL+ALT+D Практическое руководство. Использование окна дизассемблирования
Регистры CTRL+ALT+G Практическое руководство. Использование окна регистров

Отладка приложений

Для разных типов приложений и для разных языков требуются разные параметры и методы, а также в них возникают разные проблемы, которые требуют отладки. [3]

Отладка приложений для Магазина Windows и универсальных приложений для Windows Способы отладки приложений для Магазина Windows и универсальных приложений для Windows
Отладка управляемого кода Способы отладки управляемого кода (Visual C#, Visual Basic и F3)
Отладка машинного кода Способы отладки разных приложений с машинным кодом C++
Отладка кода GPU Способы отладки кода C++, выполняющегося в GPU.
Диагностика графики в Visual Studio Способы отладки графики DirectX.
Отладка веб-приложений и скриптов Способы отладки веб-приложений, приложений ASP.NET и AJAX.
Отладка служб WCF Способы отладки служб Windows Communication Foundation.

Отладка многопоточных приложений в Visual Studio

Поток — это последовательность инструкций, которой операционная система выделяет время процессора. Каждый процесс, выполняющийся в операционной системе, состоит по крайней мере из одного потока. Процессы, имеющие более одного потока, называются многопоточными.

Компьютеры с несколькими процессорами или с многоядерными процессорами и Hyper-Threading-процессы могут выполнять несколько потоков в одно и то же время. Параллельная обработка нескольких потоков может значительно повысить производительность программы, но также может сделать отладку намного сложнее, так как появляется необходимость следить за несколькими потоками.[4]

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

Visual Studio предоставляет окно Потоки, окно «Потоки GPU», окно «Контроль параллельных данных» и другие функции, которые облегчают отладку многопоточных приложений. Наилучший способ подробнее узнать о функциях работы с потоками — выполнить пошаговые руководства.

Visual Studio также предоставляет эффективные средства для работы с точками останова и трассировки, что может быть очень полезно при отладке многопоточных приложений. Можно использовать фильтры точек останова для установки точек останова на отдельных потоках. Отладка многопоточного приложения, которое имеет пользовательский интерфейс, может быть особенно сложной. В этом случае можно рассмотреть выполнение приложения на втором компьютере и использовать удаленную отладку.

Реализация работы отладчика

Примечания

  1. Дополнительные функции отладчика в Visual Studio. [Электронный ресурс] - Режим доступа: https://msdn.microsoft.com/ru-ru/library/mt243866.aspx
  2. Окна отладки. [Электронный ресурс] - Режим доступа: https://msdn.microsoft.com/ru-ru/library/mt599640.aspx
  3. Отладка приложений разных типов. [Электронный ресурс] - Режим доступа: https://msdn.microsoft.com/ru-ru/library/mt243869.aspx
  4. Отладка многопоточных приложений в Visual Studio. [Электронный ресурс] - Режим доступа: https://msdn.microsoft.com/ru-ru/library/ms164746.aspx