Не удается увидеть локальные переменные класса при отладке DLL в Visual Studio ..? - PullRequest
1 голос
/ 29 мая 2019

Я пытаюсь отладить DLL, которую я написал в VB.Net. Когда запускается внешняя программа, она загружает DLL и все работает нормально ... но я не вижу переменные класса на панели Locals. Они отображаются пустыми, как показано ниже.

Кроме того, некоторые строки кода генерируют ошибку «Нет исходного кода для текущего местоположения», но я думаю, что понимаю почему. Всякий раз, когда он пытается вступить в члены класса любой из библиотек Microsoft, у него, конечно, не будет никакой информации для них. Но любые строки, которые имеют дело только с кодом, который я написал, работают нормально.

enter image description here

Это надстройка COM DLL для Microsoft Access 2007, но я предполагаю, что проблема примерно одинакова, независимо от типа DLL. Shared COM Addin Wizard использовался для начала, а затем началась настройка с удовлетворительными результатами ... за исключением невидимых переменных в окне Locals.

Я новичок в написании и отладке DLL, подобной этой; до сих пор я делал только EXE-файлы. Я исследовал MSDN, Google и переполнение стека, и вот подробности, о которых спрашивают другие темы ...

  • Visual Studio 2008, .Net 3.0 и Access 2007
  • Свойства проекта> Отладка> Внешняя программа указывает на MSAccess.exe.
  • Конфигурация проекта настроена на отладку.
  • Оптимизации = выкл.
  • Создать отладочную информацию = Полная.
  • Файл PDB находится в папке \bin\ вместе с DLL.
  • Точки останова работают.
  • Сообщения отладки.Принт работают.

Я перерыл реестр и нашел все ссылки на проект, DLL и его пользовательский UserControl (требуется, так как проект создает CustomTaskPane, а все пути пути указывают на папку \bin\.

Что я делаю не так?

Что я делаю правильно?

Что я могу улучшить?

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

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

Вчера у меня был марафонский сеанс «Нажми все», в настройках проекта и «Настройки»> «Отладка», но ничего не помогло. В какой-то момент я перестал возиться с настройками отладки и продолжал работать над кодом, пока не устал и не пошел домой.

Этим утром со свежим умом я попытался снова и обнаружил переменные частного класса теперь все были видимы . И я не знаю почему. Также появилась новая проблема: приглашение отладчика Just-In-Time продолжало появляться, даже если оно не было включено в настройках:

enter image description here

Кроме того, кнопки панели воспроизведения / остановки / шага стали бы недоступны, когда они не должны быть, но пункты меню для тех же пунктов функционировали нормально.

Я дважды проверил все настройки. Я играл со всем и не мог заставить локальные переменные класса снова стать невидимыми, и не мог заставить диалоговое окно JIT исчезнуть.

Итак, я ...

  • Сделал копию папки решения.
  • Очищенный раствор.
  • Перестроено решение, включая проект установки.
  • Деинсталлировал проект установки из Windows через Solution Explorer.
  • Снова очистили раствор.
  • Удалил файл SUO.
  • Удалил все в \ bin \ and \ debug.
  • Перестроено решение, включая проект установки.
  • И все же проблемы сохранялись.

После приглашения JIT я нажал «Продолжить» (F5), а затем закрыл MSAccess. После того как выполнение прекратилось, некоторые панели IDE (такие как Explorer, Locals и т. Д.) Исчезли, а некоторые полетели в случайные места на экране. Тогда я решил, что что-то может быть повреждено, и начал строить планы по удалению / переустановке всей Visual Studio 2008 с нуля, и, возможно, даже нового решения с нуля.

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

Так что в исходном решении я ...

  • Экспортировать настройки из Сервис> Настройки импорта и экспорта.
  • Сброс всех настроек.
  • Импортированы только что сохраненные настройки.
  • В момент закрытия диалогового окна импорта я получил сообщение об ошибке: «Произошла непредвиденная ошибка».
  • При перезапуске VS IDE я получил диалоговое окно, в котором говорилось: «Visual Studio настраивает среду для первого использования». Это не звучало хорошо.
  • Попытка импорта настроек снова, та же ошибка.
  • Перезагрузился, попытался импортировать снова, та же ошибка.
  • Закрыл файл решения, попытался снова импортировать настройки без какого-либо открытого решения, и это сработало .... или, похоже,
  • Затем открыл Решение ... и те же проблемы вернулись.
  • Экспортированы настройки из нового решения.
  • Импортировал эти настройки в исходное решение ... и это исправлено ..?
  • Не было ошибки импорта, и проект начал работать правильно .. !!
  • Локальные переменные класса были видны, и подсказка JIT пропала .. !!

Так что ... я думаю, что-то сработало в Solution, одном из проектов, настройках IDE или ... что-то. Я надеюсь, что это помогает кому-то еще.

0 голосов
/ 29 мая 2019

Хорошо, отвечаю на часть моего собственного вопроса.Мне кажется, я исправил сообщение об ошибке «Нет исходного кода для текущего местоположения».В свойствах проекта «Включить отладку неуправляемого кода» было включено.

Если эта опция отключена, теперь я могу без ошибок просматривать код, даже если он попадает в объекты, для которых у меня нет кода.Отладчик работает немного по-другому, но я еще не закрепил его.Я читал о различиях между управляемым и неуправляемым кодом и отлаживал их в смешанных комбинациях, но, хотя я в принципе понимаю, я еще не понимаю на практике.

Мои локальные переменные по-прежнему пустые, хотя.

...