Поделиться через


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

Файлы дампа с кучами или без куч; создание файла дампа; открытие файла дампа; поиск двоичных файлов, PDB-файлов и исходных файлов для файла дампа.

Описание

Что такое файл дампа?

Файлы дампа, с кучами или без куч

Требования и ограничения

Создание файла дампа

Открытие файла дампа

Поиск двоичных файлов, файлов символов (.pdb) и исходных файлов

Что такое файл дампа?

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

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

К началуСодержание

Файлы дампа, с кучами или без куч

Можно создавать файлы дампа со сведениями кучи или без них.

  • Файлы дампа с кучами содержат снимок памяти приложения. Сюда входят значения переменных в момент создания дампа. После загрузки файла дампа, сохраненного с кучей, Visual Studio может загружать символы, даже если двоичный файл приложения не найден. Visual Studio также сохраняет в файле дампа двоичные файлы загруженных модулей машинного кода, что может значительно упростить отладку.

  • Файлы дампа без куч гораздо меньше по размеру, чем дампы со сведениями кучи. Однако в этом случае для поиска сведений о символах отладчик должен загружать двоичные файлы приложения. Двоичные файлы должны в точности соответствовать двоичным файлам, которые использовались при создании дампа. В файлах дампа без данных кучи хранятся только значения переменных стека.

К началуСодержание

Требования и ограничения

  • Отладка с использованием файлов дампа оптимизированного кода может сопровождаться ложной информацией. К примеру, встраивание компилятором функций может приводить к непредвиденным стекам вызовов, а другие виды оптимизации могут изменять время существования переменных.

  • Отладка с использованием файла дампа, созданного на 64-разрядном компьютере, должна производиться в экземпляре Visual Studio, работающем на 64-разрядном компьютере.

  • В версиях Visual Studio до VS 2013 невозможно открыть дампы 32-битных приложений, выполняющихся на 64-разрядных компьютерах, которые были собраны определенными средствами (например, диспетчером задач и 64-битной версией WinDbg). В VS 2013 это ограничение снято.

  • Visual Studio поддерживает отладку файлов дампа, создаваемых приложениями в машинных кодах на устройствах ARM. Visual Studio также поддерживает отладку файлов дампа, создаваемых управляемыми приложениями на устройствах ARM, но только в отладчике машинного кода.

  • Для выполнения отладки файлов дампа режима ядра в Visual Studio 2013 следует загрузить средства отладки для Windows (версию для Windows 8.1). См. видеоролик Отладка на уровне ядра в Visual Studio.

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

  • Для отладки с SOS.dll (расширение отладки SOS) в Visual Studio необходимо установить средства отладки для Windows, являющиеся частью комплекта разработки драйверов для Windows (WDK). Подробнее см. раздел Предварительная версия Windows 8.1: комплекты, материалы и средства для загрузки.

К началуСодержание

Создание файла дампа

Создание файла дампа с использованием Visual Studio:

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

  • Если включена JIT-отладка в Visual Studio, можно подключить отладчик к аварийному процессу, который выполняется вне отладчика, а затем сохранить файл дампа. См. раздел Присоединение к выполняемым процессам с использованием отладчика Visual Studio.

Файлы дампа также можно создавать с помощью любой программы, которая поддерживает формат минидампов Windows. Такой программой, например, может быть программа командной строки Procdump из Windows Sysinternals, которая может создавать файлы аварийного дампа процесса на основе триггеров или по требованию. Дополнительные сведения об использовании других средств для создания файлов дампа см. в подразделе Требования и ограничения в этом разделе.

К началуСодержание

Открытие файла дампа

  1. В Visual Studio последовательно выберите Файл, Открыть, Файл.

  2. В диалоговом окне Открытие файла найдите и выберите файл дампа. Обычно они имеют расширение DMP. Затем нажмите ОК.

  3. Появляется окно Сводка файла дампа. В этом окне можно просмотреть сведения об отладке для файла дампа, установить путь символов, запустить отладку и скопировать сводку в буфер.

    Страница сводки минидампа

  4. Чтобы начать отладку, перейдите в раздел Действия и выберите Только машинный код или Отладка в смешанном режиме.

Поиск двоичных файлов, файлов символов (.pdb) и исходных файлов

Чтобы можно было использовать все функции Visual Studio для отладки файла дампа, необходимо иметь доступ к следующим файлам:

  • EXE-файл, для которого был получен дамп, и другие двоичные файлы (DLL и т. п.), которые использовались в процессе, для которого был создан дамп.

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

  • Файлы символов (.pdb) для EXE-файлов и других двоичных файлов.

  • Исходные файлы для нужных модулей.

    Исполняемый файл и PDB-файлы должны точно соответствовать версии и сборке файлов, которые использовались при создании дампа.

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

Пути поиска по умолчанию для исполняемых файлов

Visual Studio автоматически ищет исполняемые файлы, не включенные в файл дампа, в следующих расположениях:

  1. Каталог, содержащий файл дампа.

  2. Путь к модулю, указанный в файле дампа. Это путь к модулю на компьютере, на котором был создан дамп.

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

Использование страниц "Двоичные файлы не найдены" / "Символы не найдены" / "Исходный код не найден"

Если Visual Studio не может найти файлы, необходимые для отладки модуля в дампе, отображается соответствующая страница (Двоичные файлы не найдены, Символы не найдены или Исходный код не найден). Эти страницы предоставляют подробные сведения о причине проблемы, а также ссылки на действия, которые могут помочь определить правильное расположение файлов. Подробнее см. раздел Указание файлов символов (.pdb) и файлов с исходным кодом в отладчике Visual Studio.

К началуСодержание

См. также

Основные понятия

JIT-отладка в Visual Studio

Отладка приложения путем записи выполнения кода с помощью IntelliTrace

Другие ресурсы

Указание файлов символов (.pdb) и файлов с исходным кодом в отладчике Visual Studio