Вопрос

У меня есть родной C Dll, который вызывает LoadLibrary для загрузки другого Dll, у которого включен флаг / clr. Затем я использую GetProcAddress, чтобы получить функцию и вызвать ее на динамически загруженной dll. Я хотел бы войти в динамическую библиотеку в отладчике, но символы никогда не загружаются. Есть идеи?

И я должен был сказать, что использую Visual Studio 2008.

Обновление: благодаря нескольким советам ниже, я изменил отладку проекта на Mixed. Это не сработало, но я думаю, что знаю почему. Я разрабатываю надстройку к существующему приложению. Приложение, к которому я подключаюсь, запускает один exe, затем запускает другой. Поэтому я должен использовать «Присоединить к процессу» запустить отладчик. Я предполагаю, что запуск отладчика таким способом по умолчанию будет "Авто". Есть ли способ изменить поведение VS по умолчанию на использование " Mixed " отладки?

Это было полезно?

Решение

Это из VS2008, но если я правильно помню, VS2005 был похож. В свойствах собственного проекта в разделе «Свойства конфигурации -> Отладка» есть «Тип отладчика» который установлен на "Авто" по умолчанию. Вам нужно изменить его на «Смешанный», потому что VS не достаточно умен, чтобы понять, что вам нужна управляемая отладка

Другие советы

У меня был неоднозначный опыт создания подобных вещей в VisualStudio. Вы можете рассмотреть возможность использования ProcMon, чтобы увидеть, где VisualStudio ищет файл PDB. В качестве альтернативы вы можете попробовать использовать WinDbg. Кажется, он лучше справляется с загрузкой символов, а если нет, вы можете явно загрузить их самостоятельно. Использование WinDbg включает в себя крутой курс обучения, но если вы сейчас тратите время, разве оно того не стоит?

Вы также можете запустить exe-файл самостоятельно и из источника управляемого dll подключиться к процессу для его отладки.

Измените dll в смешанном режиме, создав исключение CLR, в котором он вводит первый код, который вас интересует в отладке. Это должно дать вам возможность запустить управляемый отладчик.

В VS2005 для каждого проекта предусмотрены опции, позволяющие включать собственные отладчики и отладчики CLR. Возможно, вам потребуется включить отладчик CLR для собственного проекта DLL, из которого вы запускаете отладчик.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top