Отладка стороннего DLL в Visual Studio?

16
задан Community 23 May 2017 в 11:47
поделиться

6 ответов

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

Или Вы могли спросить поставщика, если исходный код доступен. Это - вероятно, самый легкий путь.

17
ответ дан 30 November 2019 в 17:53
поделиться

Основываясь на ответе Andrew, Вы просто рассматриваете декомпилируемый исходный код как новая библиотека в рамках Вашего проекта и устанавливаете точки останова в источнике. Удалите все ссылки на сторонний DLL так, чтобы это был декомпилируемый код, который выполняется.

Другие вещи:

  • можно нарушать закон путем декомпиляции кода или нарушения лицензионного соглашения со сторонним поставщиком. Удостоверьтесь, что рассмотрели это с кем-то.
  • Вы захотите удостовериться, что Вы удаляете ссылки на свою декомпилируемую версию, если Вы поставлетесь другим разработчикам или зарегистрировались в большем исходном дереве. Легкий забыть это!
5
ответ дан 30 November 2019 в 17:53
поделиться

Существует два метода, с которыми я столкнулся:

1) Доступ к проекту DLL из проекта использования. Это вовлекает создание DLL в отдельный экземпляр Visual Studio и затем доступа к DLL через различный проект в Visual Studio (это предполагает, что у Вас есть исходный код). Там много способов выполнить это:

  • можно добавить Trace.WriteLine операторы в DLL, который обнаружится в окне 'Output' в Visual Studio.
  • можно добавить System.Diagnostics.Debugger.Break() операторы к коду DLL. При выполнении проекта вызова в Visual Studio выполнение программы остановится там. Отсюда можно добавить доступ стек вызовов (включая все вызовы функции в самом DLL) и установить точки останова (хотя значок для точки останова будет казаться отключенным, и текст при наведении курсора для точки останова считает "Точку останова, не будет в настоящее время поражаться. Никакие символы не были загружены для этого документа").
  • , Если DLL выдает исключение (который Вы видите из окна 'Output', если исключение поймано и обработано DLL) можно сказать Visual Studio всегда повреждаться, когда тот тип исключения брошен. Хит Ctrl + Высокий звук + E , найдите тип исключения брошенным и нажмите столбец 'Throw' для того исключения. Отсюда это точно, как будто Вы использовали System.Diagnostics.Debugger.Break() (см. выше).

2) Присоединение использования обрабатывают к проекту DLL. Это включенное сцепление отладчика Visual Studio в рабочий процесс.

  • Открывают проект DLL в Visual Studio.
  • Запущенный приложение, которое использует DLL (это приложение не может быть запущено от другого экземпляра Visual Studio, так как процессу уже присоединят отладчик к нему).
  • Отсюда можно добавить точки останова и ступить через код DLL, загруженный в Visual Studio (хотя точка останова будет казаться отключенной то же как в методе 1).
3
ответ дан 30 November 2019 в 17:53
поделиться

Что-то, что работало на меня с отладкой нескольких сторонних библиотек, а также .NET сама, WinDbg. Это - потрясающий отладчик от Microsoft, что я раньше диагностировал некоторые липкие проблемы, которые происходили глубоко в платформе.

необходимо использовать Сын Забастовки (SOS) расширения, если это - управляемый DLL. Это может отладить собственный компонент также. Необходимо будет знать немного о стеках вызовов и блоке / CIL инструкции быть способными использовать его. Необходимо ли быть в состоянии определить исключение и что вызывает его. Мы использовали WinDbg/SOS, чтобы найти, например, что в HttpWebResponse, если Вы используете сжатие Gzip для загрузки страницы и сервера, возвращает плохой заголовок Gzip.NET выполняет распаковку в пуле потоков, и катастрофический отказ вынет процесс. Счастливая отладка.

3
ответ дан 30 November 2019 в 17:53
поделиться

Я думал, что Отражатель.NET получил некоторые плагины отладки. Это было бы настолько лучшей идеей, потому что декомпиляция и перекомпиляция кода обычно перестали работать, и необходимо сделать столько изменений в коде для фиксации его.

Дают отладчику Отражателя.NET попытку. Это могло бы помочь Вам много.

0
ответ дан 30 November 2019 в 17:53
поделиться

.NET Reflector 6 поставляется с надстройкой Visual Studio, которая позволяет использовать пошаговую отладку Visual Studio для сборок, для которых у вас нет исходного кода.

Прочтите это сообщение в блоге:

http://www.simple-talk.com/community/blogs/alex/archive/2009/09/22/74919.aspx для получения более подробной информации.

Это все еще очень ранняя сборка. Так что нет никаких гарантий, что это сработает, и это может нарушить конфигурацию вашей визуальной студии или проекта. Убедитесь, что у вас есть резервные копии (или система контроля версий) для любых проектов, в которых вы его используете.

Загрузите здесь: http://www.red-gate.com/MessageBoard/viewforum.php?f=109

0
ответ дан 30 November 2019 в 17:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: