Как отладить dll visual studio
Практическое руководство. Отладка из проекта DLL в Visual Studio (C#, C++, Visual Basic, F#)
Одним из способов отладки проекта библиотеки DLL является указание вызывающего приложения в свойствах проекта библиотеки DLL. Затем можно запускать отладку из самого проекта DLL. Чтобы этот метод работал, приложение должно вызвать одну и ту же библиотеку DLL в том расположении, которое вы настроили. Если приложение находит и загружает другую версию библиотеки DLL, эта версия не будет содержать точки останова. Другие методы отладки библиотек DLL см. в разделе Отладка проектов DLL.
Если управляемое приложение вызывает собственную библиотеку DLL или ваше собственное приложение вызывает управляемую библиотеку DLL, можно выполнить отладку библиотеки DLL и вызывающего приложения. Дополнительные сведения см. в разделе Практическое руководство. Отладка в смешанном режиме.
Собственные и управляемые DLL-проекты имеют разные параметры для указания вызывающих приложений.
Указание вызывающего приложения в собственном проекте DLL
Выберите проект C++ DLL в обозревателе решений. Щелкните значок Свойства, нажмите сочетание клавиш ALT+ВВОД или щелкните проект правой кнопкой мыши и выберите элемент Свойства.
Страницы свойств убедитесь, что в поле Настройка в верхней части окна задано значение Отладка.
Выберите Свойства конфигурации > Отладка.
В списке Запускаемый отладчик выберите Локальный отладчик Windows или Удаленный отладчик Windows.
В поле Команда или Удаленная команда добавьте полный путь и имя файла вызывающего приложения, например EXE-файл.
Добавьте необходимые аргументы программы в поле Аргументы команды.
Нажмите кнопку ОК.
Указание вызывающего приложения в управляемом проекте DLL
Выберите проект C# или Visual Basic DLL в обозревателе решений. Щелкните значок Свойства, нажмите сочетание клавиш ALT+ВВОД или щелкните проект правой кнопкой мыши и выберите элемент Свойства.
Убедитесь, что в поле Настройка в верхней части окна задано значение Отладка.
В разделе Запустить действие
Или выберите Запустить браузер с URL-адресом и введите URL-адрес локального приложения ASP.NET.
Добавьте необходимые аргументы командной строки в поле Аргументы командной строки или Аргументы приложения.
Используйте Файл > Сохранить выбранные элементы или CTRL+S, чтобы сохранить изменения.
Отладка из проекта DLL
Задайте точки останова в проекте DLL.
Щелкните проект DLL правой кнопкой мыши и выберите Назначить запускаемым проектом.
Убедитесь, что в поле Конфигурация решений установлено значение Отладка. Нажмите клавишу F5, щелкните зеленую стрелку Запуск или выберите Отладка > Начать отладку.
Если отладка не достигает точек останова, убедитесь, что выходные данные библиотеки DLL (по умолчанию — папка
\Debug) — это расположение, которое вызывает вызывающее приложение.
Если вы хотите прервать выполнение кода в управляемом вызывающем приложении из собственной библиотеки DLL или наоборот, включите отладку в смешанном режиме.
В некоторых сценариях может потребоваться сообщить отладчику, где найти исходный код. Дополнительные сведения см. в разделе Использование страниц «Символы не загружены» или «Нет исходного кода».
Debug DLLs in Visual Studio (C#, C++, Visual Basic, F#)
A DLL (dynamic-link library) is a library that contains code and data that can be used by more than one app. You can use Visual Studio to create, build, configure, and debug DLLs.
Create a DLL
The following Visual Studio project templates can create DLLs:
Debugging a WCF Library is similar to debugging a Class Library. For details, see Windows Forms Controls.
You usually call a DLL from another project. When you debug the calling project, depending on the DLL configuration, you can step into and debug the DLL code.
DLL debug configuration
When you use a Visual Studio project template to create an app, Visual Studio automatically creates required settings for Debug and Release build configurations. You can change these settings if necessary. For more information, see the following articles:
Set C++ DebuggableAttribute
To set DebuggableAttribute :
Select the C++ DLL project in Solution Explorer and select the Properties icon, or right-click the project and select Properties.
In the Properties pane, under Linker > Debugging, select Yes (/ASSEMBLYDEBUG) for Debuggable Assembly.
For more information, see /ASSEMBLYDEBUG.
Set C/C++ DLL file locations
\Debug output folder, or you can copy the files there manually.
For C/C++ projects, you can set header and LIB file locations in the project property pages, instead of copying them to the output folder.
To set C/C++ header and LIB file locations:
Select the C/C++ DLL project in Solution Explorer and select the Properties icon, or right-click the project and select Properties.
At the top of the Properties pane, under Configuration, select All Configurations.
Under C/C++ > General > Additional Include Directories, specify the folder that has header files.
Under Linker > General > Additional Libraries Directories, specify the folder that has LIB files.
Under Linker > Input > Additional Dependencies, specify the full path and filename for the LIB files.
Select OK.
For more information on C++ project settings, see Windows C++ property page reference.
Build a Debug version
You can create a custom build task to copy the DLL files to your \Debug output folder, or you can copy the files there manually.
Make sure to call the DLL in its correct location. This may seem obvious, but if a calling app finds and loads a different copy of the DLL, the debugger will never hit the breakpoints you set.
Debug a DLL
To debug a DLL, you can start debugging from the calling app, or debug from the DLL project by specifying its calling app. You can also use the debugger Immediate window to evaluate DLL functions or methods at design time, without using a calling app.
Start debugging from the calling app
The app that calls a DLL can be:
To debug a DLL from a calling app, you can:
Open the project for the calling app, and start debugging by selecting Debug > Start Debugging or pressing F5.
Attach to an app that is already deployed and running on a test or production computer. Use this method for DLLs on websites or in web apps. For more information, see How to: Attach to a running process.
Before you start debugging the calling app, set a breakpoint in the DLL. See Using breakpoints. When the DLL breakpoint is hit, you can step through the code, observing the action at each line. For more information, see Navigate code in the debugger.
During debugging, you can use the Modules window to verify the DLLs and .exe files the app loads. To open the Modules window, while debugging, select Debug > Windows > Modules. For more information, see How to: Use the Modules window.
Use the Immediate window
You can use the Immediate window to evaluate DLL functions or methods at design time. The Immediate window plays the role of a calling app.
You can use the Immediate window at design time with most project types. It’s not supported for SQL, web projects, or script.
For example, to test a method named Test in class Class1 :
With the DLL project open, open the Immediate window by selecting Debug > Windows > Immediate or pressing Ctrl+Alt+I.
Instantiate an object of type Class1 by typing the following C# code in the Immediate window and pressing Enter. This managed code works for C# and Visual Basic, with appropriate syntax changes:
In C#, all names must be fully qualified. Any methods or variables must be in the current scope and context when the language service tries to evaluate the expression.
Assuming that Test takes one int parameter, evaluate Test using the Immediate window:
The result prints in the Immediate window.
You can continue to debug Test by placing a breakpoint inside it, and then evaluating the function again.
Mixed-mode debugging
You can write a calling app for a DLL in managed or native code. If your native app calls a managed DLL and you want to debug both, you can enable both the managed and native debuggers in the project properties. The exact process depends on whether you want to start debugging from the DLL project or the calling app project. For more information, see How to: Debug in mixed mode.
You can also debug a native DLL from a managed calling project. For more information, see How to debug managed and native code.
Пошаговая отладка в Visual Studio. Рассказываем и показываем ОТ и ДО
Отладка кода в Visual Studio происходит довольно просто, если сравнивать это т процесс с другими IDE. Плюс отладчик Visual Studio обладает довольно широкими возможностями и позволяет отлаживать различные технологии, а если имеющихся средств не хватает, то можно воспользоваться дополнениями.
Отладка кода в Visual Studio
Прежде чем запускать отладчик Visual Studio, не лишним будет проверить код редактором кода и визуально оценить. Нужно искать «красные» и «зеленые»линии. «Красные» линии — это ошибки. «Зеленые» — предупреждения. Это могут быть:
«Красные» волнистые линии нужно исправить — это поможет в дальнейшем уменьшить количество ошибок, найденных Visual Studio. А зеленые, если не получается исправить, то по крайней мере нужно тщательно изучить.
Как запустить отладчик Visual Studio
Чтобы запустить отладчик Visual Studio, нужно:
последовательность исполнения кода;
значение переменных и др.
Чтобы создать точку останова в отладчике, нужно кликнуть слева от интересующей вас строки кода или при помощи клавиши «F9».
Какая информация выводится отладчиком Visual Studio
Там вам будет доступна следующая информация:
В заключение
Мы будем очень благодарны
если под понравившемся материалом Вы нажмёте одну из кнопок социальных сетей и поделитесь с друзьями.
Учебник. Сведения об отладке кода C++ с помощью Visual Studio
В этом пошаговом руководстве рассматриваются возможности отладчика Visual Studio. Более полное описание функций отладчика см. в статье c Знакомство с отладчиком Visual Studio. Отладка приложения обычно означает запуск и выполнение приложения с подключенным отладчиком. При этом в отладчике доступно множество способов наблюдения за выполнением кода. Вы можете пошагово перемещаться по коду и просматривать значения, хранящиеся в переменных, задавать контрольные значения для переменных, чтобы отслеживать изменение значений, изучать путь выполнения кода, просматривать выполнение ветви кода и т. д. Если вы не знакомы с процессом отладки, перед выполнением задач в этой статье рекомендуется прочесть документ об отладке для начинающих.
Несмотря на то, что демонстрационное приложение написано на C++, большинство функций применимы к C#, Visual Basic, F#, Python, JavaScript и другим языкам, поддерживаемым Visual Studio (F# не поддерживает возможность «Изменить и продолжить»). F# и JavaScript не поддерживают окно Видимые). Снимки экрана приведены для C++.
В этом руководстве рассмотрены следующие задачи:
Предварительные требования
Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого.
Установите Visual Studio бесплатно со страницы скачиваемых материалов Visual Studio, если еще не сделали этого.
Установите Visual Studio 2022 бесплатно со страницы скачиваемых материалов Visual Studio 2022, если еще не сделали этого.
Создание проекта
Сначала вы создадите проект консольного приложения на C++. Для этого типа проекта уже имеются все нужные файлы шаблонов, что избавляет вас от лишней работы.
Откройте Visual Studio 2017.
В верхней строке меню последовательно выберите Файл > Создать > Проект.
В левой области диалогового окна Новый проект разверните узел Visual C++ и выберите Рабочий стол Windows. В средней области выберите Консольное приложение Windows. Назовите проект get-started-debugging.
Нажмите кнопку ОК.
Новый проект открывается в Visual Studio.
Запустите Visual Studio 2019.
Если окно запуска не открыто, выберите Файл > Окно запуска.
На начальном экране выберите Создать проект.
В поле поиска окна Создание проекта введите консоль. Затем выберите C++ в списке языков и Windows в списке платформ.
Применив фильтры языка и платформы, выберите шаблон Консольное приложение и нажмите кнопку Далее.
В поле Имя проекта окна Настроить новый проект введите get-started-debugging. Затем нажмите Создать.
Новый проект открывается в Visual Studio.
Создание приложения
Откройте файл get-started-debugging.cpp и замените все его содержимое по умолчанию следующим кодом:
Запуск отладчика
Нажмите клавишу F5 (Отладка > Начать отладку) или кнопку Начать отладку 
При нажатии клавиши F5 происходит запуск приложения с присоединенным отладчиком. Но пока мы не сделали ничего особенного, чтобы проанализировать код. Поэтому приложение будет просто загружено, и вы увидите выходные данные консоли.
В этом руководстве мы более подробно рассмотрим приложение с отладчиком и познакомимся с возможностями отладчика.
Остановите отладчик, нажав красную кнопку остановки 
В окне консоли нажмите клавишу ВВОД, чтобы закрыть его.
Установка точки останова и запуск отладчика
В цикле for функции main установите точку останова, щелкнув левое поле следующей строки кода:
В месте установки точки останова появится красный круг 
Точки останова — это один из самых простых и важных компонентов надежной отладки. Точка останова указывает, где Visual Studio следует приостановить выполнение кода, чтобы вы могли проверить значения переменных или поведение памяти либо выполнение ветви кода.
Нажмите клавишу F5 или кнопку Начать отладку
Желтая стрелка представляет оператор, на котором приостановлен отладчик. В этой же точке приостанавливается выполнение приложения (этот оператор пока не выполнен).
Если приложение еще не запущено, клавиша F5 запускает отладчик и останавливается в первой точке останова. В противном случае F5 продолжает выполнение приложения до следующей точки останова.
Точки останова полезны, если вам известны строка или раздел кода, которые вы хотите подробно изучить. Дополнительные сведения о различных типах точек останова, которые можно задать, например об условных точках останова, см. в разделе Использование точек останова.
Переход по коду в отладчике с помощью пошаговых команд
Здесь мы используем в основном сочетания клавиш, так как они позволяют быстро выполнять приложение в отладчике (эквивалентные команды, например команды меню, отображаются в круглых скобках).
После двойного нажатия клавиши F11 вы должны находиться на следующей строке кода:
F11 — это команда Шаг с заходом, которая выполняет приложение с переходом к следующему оператору. Клавишу F11 удобно использовать для более детальной проверки потока выполнения. (Мы также покажем другие варианты более быстрого перемещения по коду.) По умолчанию отладчик пропускает непользовательский код (дополнительные сведения см. в статье об отладке в режиме «Только мой код»).
Предположим, что вы закончили изучать метод SendMessage и хотите выйти из него, но остаться в отладчике. Это можно сделать с помощью команды Шаг с выходом.
Нажмите сочетание клавиш SHIFT + F11 (или Отладка > Шаг с выходом).
Эта команда возобновляет выполнение приложения (и работу отладчика) до возврата данных текущим методом или текущей функции.
Во время приостановки на вызове метода один раз нажмите клавишу F10 (или выберите Отладка > Шаг с обходом).
Переход по коду с помощью команды «Выполнение до щелкнутого»
Нажмите клавишу F5, чтобы перейти к точке останова.
Кнопка Выполнение до щелкнутого впервые появилась в Visual Studio 2017. (Если кнопка с зеленой стрелкой отсутствует, воспользуйтесь клавишей F11, чтобы переместить отладчик в нужное место.)
Нажмите кнопку Выполнение до щелкнутого
Использование этой кнопки аналогично установке временной точки останова. Функция Выполнение до щелкнутого удобна для быстрой работы в видимой области кода приложения (можно щелкнуть в любом открытом файле).
Быстрый перезапуск приложения
Нажмите кнопку Перезапустить 
Кнопка Перезапустить позволяет сэкономить время, затрачиваемое на остановку приложения и перезапуск отладчика. Отладчик приостанавливается в первой точке останова, достигнутой при выполнении кода.
Проверка переменных с помощью подсказок по данным
Функции, позволяющие проверять переменные, являются самыми полезными возможностями отладчика. Реализовывать эту задачу можно разными способами. Часто при попытке выполнить отладку проблемы пользователь старается выяснить, хранятся ли в переменных значения, которые требуются ему в определенное время.
При приостановке на операторе name += letters[i] наведите указатель мыши на переменную letters и увидите ее значение по умолчанию — size= <10>.
Часто при отладке требуется быстро проверить значения свойств в переменных, чтобы убедиться, что в них хранятся ожидаемые значения. Советы по данным — отличный способ это сделать.
Проверка переменных с помощью окон «Видимые» и «Локальные»
Взгляните на окно Видимые в нижней части редактора кода.
Если оно закрыто, откройте его во время приостановки в отладчике, выбрав Отладка > Окна > Видимые.
В окне Видимые отображаются переменные и их текущие значения. В окне Видимые отображаются все переменные, используемые в текущей или предыдущей строке (сведения о зависящем от языка поведении см. в соответствующей документации).
Затем посмотрите на окно Локальные на вкладке рядом с окном Видимые.
В окне Локальные показаны переменные, которые находятся в текущей области, то есть текущем контексте выполнения.
Установка контрольного значения
В основном окне редактора кода щелкните правой кнопкой мыши переменную name и выберите команду Добавить контрольное значение.
В нижней части редактора кода откроется окно Контрольное значение. В окне Контрольное значение можно указать переменную (или выражение), которую необходимо отслеживать.
Просмотр стека вызовов
Во время приостановки в цикле for щелкните окно Стек вызовов, которое по умолчанию открыто в нижней правой области.
Если оно закрыто, откройте его во время приостановки в отладчике, выбрав Отладка > Окна > Стек вызовов.
В окне Стек вызовов показан порядок вызова методов и функций. В верхней строке приведена текущая функция (в данном приложении метод SendMessage ). Во второй строке показано, что функция SendMessage была вызвана из метода main и т. д.
Окно Стек вызовов аналогично перспективе «Отладка» в некоторых интегрированных средах разработки, например Eclipse.
Стек вызовов хорошо подходит для изучения и анализа потока выполнения приложения.
Дважды щелкните строку кода, чтобы просмотреть исходный код. При этом также изменится текущая область, проверяемая отладчиком. Это действие не перемещает отладчик.
Для выполнения других задач можно воспользоваться контекстными меню из окна Стек вызовов. Например, можно вставлять точки останова в указанные функции, перемещать отладчик с помощью функции Выполнение до текущей позиции и изучать исходный код. Дополнительные сведения см. в разделе Практическое руководство. просмотреть стек вызовов.
Изменение потока выполнения
Нажмите клавишу F11.
Отладчик повторно выполнит функцию std::wcout (вы увидите это в выходных данных окна консоли).
Изменяя поток выполнения, можно решать множество задач, например тестировать различные пути выполнения кода или повторно выполнять код без перезапуска отладчика.
Как правило, при работе с этой функцией необходимо соблюдать осторожность — вы увидите соответствующее предупреждение во всплывающей подсказке. Могут отображаться и другие предупреждения. При перемещении указателя предыдущее состояние приложения не возвращается.
Чтобы продолжить выполнение приложения, нажмите клавишу F5.
Поздравляем с завершением этого учебника!
Следующие шаги
В этом руководстве вы узнали, как запускать отладчик, осуществлять пошаговое выполнение кода и проверять переменные. Возможно, вы захотите получить более полное представление о функциях отладчика, а также воспользоваться ссылками на дополнительные сведения.









