2009-07-29 5 views
2

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

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

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

ответ

4

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

1

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

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

1

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

1

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

Смежные вопросы