Как отлаживать проекты библиотеки внешних классов в 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:
Таким образом, всякий раз, когда я создаю внешнюю 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.