Как отлаживать проекты библиотеки внешних классов в visual studio?

У меня есть проект (A), который ссылается на сборку из библиотеки классов внешнего проекта (B), которая находится в другом решении vs.

Мне еще предстоит понять, как я могу эффективно отлаживать библиотеку классов от B при запуске программы из проекта A. Есть ли что-то, что я должен включить в проекте B, например, информацию об отладке и т.д., поэтому я могу входить в отладочное время из A?

Спасибо заранее.

Ответ 1

Попробуйте отключить Just My Code (JMC).

  • Инструменты → Параметры → Отладчик
  • Снимите флажок "Включить только мой код"

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

ИЗМЕНИТЬ

Когда вы нарушите свой код, попробуйте следующее.

  • Отладка → Windows → Модули
  • Найдите DLL для интересующего вас проекта
  • Щелкните правой кнопкой мыши → Символы загрузки → Выберите путь к .PDB для другого проекта

Ответ 2

Это раздражало меня в течение некоторого времени. То, что я обычно делаю, - это восстановление моей внешней библиотеки с помощью режима отладки, а затем скопировать файлы .dll и .pdb в корзину моего веб-сайта. Это позволяет мне вступить в libarary код.

Ответ 3

Я запускаю два экземпляра visual studio - один для внешней dll и один для основного приложения.
В свойствах проекта внешней dll задайте следующее:

События сборки:

  • copy /y "$(TargetDir)$(TargetName).dll" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).dll"

  • copy /y "$(TargetDir)$(TargetName).pdb" "C:\<path-to-main> \bin\$(ConfigurationName)\$(TargetName).pdb"

Debug:

  • Запустите внешнюю программу: C:\<path-to-main>\bin\debug\<AppName>.exe

  • Рабочий каталог C:\<path-to-main>\bin\debug

Таким образом, всякий раз, когда я создаю внешнюю dll, он обновляется в главном каталоге приложения. Если я удалю отладку из проекта внешней dll - основное приложение запускается, но отладчик только обращается к точкам останова во внешней dll. Если я удалю отладку из основного проекта, основное приложение запускается с самой недавно построенной внешней dll, но теперь отладчик только попадает в контрольные точки в основном проекте.

Я понимаю, что один отладчик выполнит эту работу для обоих, но мне легче держать эти два пути таким образом.

Ответ 4

Предположим, что путь

Проект A

C:\Projects\ProjectA

Проект B

C:\Projects\ProjectB

а dll ProjectB находится в

C:\Projects\ProjectB\bin\Debug\

Чтобы отладить ProjectB от ProjectA, выполните следующие

  • Скопировать B dll с dll .PDB в каталог компиляции ProjectA.
  • Теперь отлаживаем ProjectA. Когда код достигнет той части, где вам нужно вызвать метод dll или события и т.д. Во время отладки, нажмите F11, чтобы перейти в код dll.

ПРИМЕЧАНИЕ: НЕ ПРОПУСТИТЕ КОПИРОВАТЬ ФАЙЛ .PDB

Ответ 5

[по словам Мартина Беккета, парня, который пришлет мне этот ответ]

Вы можете отлаживать внешнюю библиотеку.

На вкладке "Настройки проекта" найдите "visual studio directories" в поле "исходный код", включая путь к источникам openCV. Затем убедитесь, что файлы .pdb для каждой из отладочной DLL находятся в том же каталоге, что и dll.