Если DLL находится в .NET язык, можно декомпилировать его с помощью инструмента как Отражатель.NET и затем отладить против исходного кода.
Или Вы могли спросить поставщика, если исходный код доступен. Это - вероятно, самый легкий путь.
Основываясь на ответе Andrew, Вы просто рассматриваете декомпилируемый исходный код как новая библиотека в рамках Вашего проекта и устанавливаете точки останова в источнике. Удалите все ссылки на сторонний DLL так, чтобы это был декомпилируемый код, который выполняется.
Другие вещи:
Существует два метода, с которыми я столкнулся:
1) Доступ к проекту DLL из проекта использования. Это вовлекает создание DLL в отдельный экземпляр Visual Studio и затем доступа к DLL через различный проект в Visual Studio (это предполагает, что у Вас есть исходный код). Там много способов выполнить это:
Trace.WriteLine
операторы в DLL, который обнаружится в окне 'Output' в Visual Studio. System.Diagnostics.Debugger.Break()
операторы к коду DLL. При выполнении проекта вызова в Visual Studio выполнение программы остановится там. Отсюда можно добавить доступ стек вызовов (включая все вызовы функции в самом DLL) и установить точки останова (хотя значок для точки останова будет казаться отключенным, и текст при наведении курсора для точки останова считает "Точку останова, не будет в настоящее время поражаться. Никакие символы не были загружены для этого документа"). System.Diagnostics.Debugger.Break()
(см. выше). 2) Присоединение использования обрабатывают к проекту DLL. Это включенное сцепление отладчика Visual Studio в рабочий процесс.
Что-то, что работало на меня с отладкой нескольких сторонних библиотек, а также .NET сама, WinDbg. Это - потрясающий отладчик от Microsoft, что я раньше диагностировал некоторые липкие проблемы, которые происходили глубоко в платформе.
необходимо использовать Сын Забастовки (SOS) расширения, если это - управляемый DLL. Это может отладить собственный компонент также. Необходимо будет знать немного о стеках вызовов и блоке / CIL инструкции быть способными использовать его. Необходимо ли быть в состоянии определить исключение и что вызывает его. Мы использовали WinDbg/SOS, чтобы найти, например, что в HttpWebResponse, если Вы используете сжатие Gzip для загрузки страницы и сервера, возвращает плохой заголовок Gzip.NET выполняет распаковку в пуле потоков, и катастрофический отказ вынет процесс. Счастливая отладка.
Я думал, что Отражатель.NET получил некоторые плагины отладки. Это было бы настолько лучшей идеей, потому что декомпиляция и перекомпиляция кода обычно перестали работать, и необходимо сделать столько изменений в коде для фиксации его.
Дают отладчику Отражателя.NET попытку. Это могло бы помочь Вам много.
.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