Отладка библиотек DLL в Visual Studio (C#, C++, Visual Basic, F#)

Библиотека DLL (библиотека динамической компоновки) — это библиотека, содержащая код и данные, которые могут использоваться несколькими приложениями. Visual Studio можно использовать для создания, сборки, настройки и отладки библиотек DLL.

Создание библиотеки DLL

Создавать библиотеки DLL можно с помощью следующих шаблонов проектов Visual Studio.

  • Библиотека классов C#, Visual Basic или F#
  • Библиотека элементов управления Windows Forms (WCF) C# или Visual Basic
  • Библиотека динамической компоновки (DLL) C++

Дополнительные сведения см. в разделе Методы отладки MFC.

Отладка библиотеки WCF аналогична отладке библиотеки классов. Дополнительные сведения см. в статье Элементы управления Windows Forms.

Обычно библиотека DLL вызывается из другого проекта. При отладке вызывающего проекта в зависимости от конфигурации библиотеки DLL можно выполнить шаг с заходом и отладить код библиотеки DLL.

Конфигурация отладки DLL

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

Установка DebuggableAttribute C++

Чтобы отладчик мог присоединиться к библиотеке DLL C++, код C++ должен добавлять DebuggableAttribute.

Установка DebuggableAttribute

  1. В обозревателе решений выберите проект DLL C++ и щелкните значок Свойства либо щелкните проект правой кнопкой мыши и выберите пункт Свойства.

  2. В области Свойства в разделе Компоновщик>Отладка выберите Да (/ASSEMBLYDEBUG) для свойства Отлаживаемая сборка.

Дополнительные сведения см. в статье /ASSEMBLYDEBUG.

Установка расположений DLL-файлов C/C++

Для отладки внешней библиотеки DLL вызывающий проект должен находить библиотеку DLL, ее PDB-файл и любые другие файлы, необходимые библиотеке DLL. Вы можете создать пользовательскую задачу сборки, чтобы скопировать эти файлы в выходную папку проекта <папка проекта>\Debug, или скопировать файлы вручную.

Для проектов C/C++ можно задать расположения файлов заголовков и LIBD-файла на страницах свойств проекта, а не копировать их в выходную папку.

Задание расположений файла заголовка C/C и LIB-файла

  1. В обозревателе решений выберите проект DLL C/C++ и щелкните значок Свойства либо щелкните проект правой кнопкой мыши и выберите пункт Свойства.

  2. В верхней части области Свойства в разделе Конфигурация выберите Все конфигурации.

  3. В разделе C/C++>Общие>Дополнительные включаемые каталоги укажите папку с файлами заголовков.

  4. В разделе Компоновщик>Общие>Дополнительные каталоги библиотек укажите папку с LIB-файлами.

  5. В разделе Компоновщик>Ввод>Дополнительные зависимости укажите полный путь и имя файла для LIB-файлов.

  6. Нажмите ОК.

Дополнительные сведения о параметрах проекта C++ см. в статье Справочник C++ по страницам свойств проекта Windows.

Создание версии отладки

Перед началом отладки обязательно создайте отладочную версию библиотеки DLL. Для отладки библиотеки DLL вызывающее приложение должно находить PDB-файл и любые другие файлы, необходимые библиотеке DLL.

Вы можете создать пользовательскую задачу сборки, чтобы скопировать эти файлы DLL в выходную папку проекта <папка вызывающего проекта>\Debug, или скопировать файлы вручную.

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

Отладка библиотеки DLL

Библиотеку DLL нельзя запускать напрямую. Ее должно вызывать приложение, обычно это EXE-файл. Дополнительные сведения см. в статье Проекты Visual Studio — C++.

Чтобы отладить библиотеку DLL, можно начать отладку из вызывающего приложения или выполнить отладку из проекта DLL, указав вызывающее приложение. Можно также использовать окно "Интерпретация" отладчика для вычисления функций или методов DLL во время разработки без использования вызывающего приложения.

Дополнительные сведения см. в статье Первое знакомство с отладчиком.

Запуск отладки из вызывающего приложения

Вызывать библиотеку DLL могут следующие виды приложений.

  • Приложение из проекта Visual Studio в том же или другом решении из библиотеки DLL.
  • Существующее приложение, которое уже развернуто и работает на тестовом или рабочем компьютере.
  • Программа расположена в Интернете и доступна по URL–адресу.
  • Веб-приложение с веб-страницей, которая внедряет библиотеку DLL.

Выполнить отладку библиотеки DLL из вызывающего приложения можно следующими способами.

  • Откройте проект для вызывающего приложения и начните отладку, выбрав Отладка>Начать отладку или нажав клавишу F5.

    or

  • Выполните присоединение к приложению, которое уже развернуто и работает на тестовом или рабочем компьютере. Используйте этот вариант для библиотек DLL на веб-сайтах или в веб-приложениях. Дополнительные сведения см. в разделе Практическое руководство. Присоединение к выполняемому процессу.

Перед запуском отладки этого вызывающего приложения нужно установить точку останова в DLL. См. статью Использование точек останова. При попадании в точку останова DLL можно пошагово проходить по коду, наблюдая действия в каждой строке. Дополнительные сведения см. в статье Навигация по коду с помощью отладчика.

Во время отладки в окне Модули можно проверить библиотеки DLL и EXE-файлы, загружаемые приложением. Чтобы открыть окно Модули, во время отладки выберите Отладка>Окна>Модули. Дополнительные сведения см. в разделе Практическое руководство. Использование окна модулей.

Использование окна "Интерпретация"

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

Примечание.

Окно Интерпретация можно использовать во время разработки с большинством типов проектов. Оно не поддерживается для SQL, веб-проектов или скриптов.

Например, чтобы протестировать метод с именем Test в классе Class1, выполните следующие действия.

  1. Откройте проект DLL, откройте окно Интерпретация, последовательно выбрав пункты Отладка>Окна>Интерпретация или нажав сочетание клавиш CTRL+ALT+I.

  2. Создайте объект типа Class1, введя следующий код C# в окне Интерпретация и нажав клавишу ВВОД. Этот управляемый код работает для C# и Visual Basic с соответствующими изменениями синтаксиса.

    Class1 obj = new Class1();
    

    В C# все имена должны быть указаны полностью. Когда языковая служба пытается вычислить выражение, все методы или переменные должны находиться в текущей области и контексте.

  3. Предположим, что Test принимает один параметр int , вычислим Test с помощью окна Интерпретация :

    ?obj.Test(10);
    

    Результат будет выведен в окне Интерпретация.

  4. Можно продолжить отладку Test, установив в нем точку останова, а затем снова вычислив эту функцию.

    Будет достигнута точка останова и можно будет пошагово пройти Test. После выполнения Test, отладчик вернется в режим разработки.

Отладка в смешанном режиме

Вы можете написать вызывающее приложение для библиотеки DLL в управляемом или машинном коде. Если собственное приложение вызывает управляемую библиотеку DLL и вы хотите выполнить отладку этих двух объектов, можно включить управляемые и машинные отладчики в свойствах проекта. Точный способ выполнения этой операции зависит от того, откуда будет начата отладка: из проекта DLL или из проекта вызывающего приложения. Дополнительные сведения см. в разделе Практическое руководство. Отладка в смешанном режиме.

Можно выполнить отладку собственной библиотеки DLL из управляемого вызывающего проекта. Дополнительные сведения см. в статье об отладке управляемого и машинного кода.