Подтвердить что ты не робот

Как подключить отладчик для перехода на собственный (С++) код из управляемой (С#) оболочки?

У меня есть обертка вокруг вызова функции С++, которую я вызываю из кода С#. Как подключить отладчик в Visual Studio для перехода на собственный код на С++?

Это оболочка, которая у меня есть, которая вызывает GetData(), определенную в файле С++:

    [DllImport("Unmanaged.dll", CallingConvention=CallingConvention.Cdecl, 
               EntryPoint = "GetData", BestFitMapping = false)]
        public static extern String GetData(String url);

Сбой кода и я хочу выяснить причину.

Спасибо, Нихилу

4b9b3361

Ответ 1

Откроется вкладка "Отладка" на странице свойств проекта. Должна быть установлен флажок "Включить неуправляемый отладку кода". Это сработало для меня, когда мы разработали новый .NET UI для наших старых библиотек С++.

Если ваша неуправляемая DLL создается из другого проекта (какое-то время наша работа строилась с использованием VS6), просто убедитесь, что у вас есть файл pdb DLL, удобный для отладки.

Другим подходом является использование С# exe в качестве целевого exe для запуска из проекта DLL, вы можете нормально отлаживать вашу DLL.

Ответ 2

в дополнение к Lou советуем для запуска отладчика, вы можете выбрать, какие отладочные механизмы используются при подключении к существующему процессу, нажав "Выбрать..." в диалоговом окне "Приложить к процессу" и выбрав "управляемый код" 'и' native code '.

Отладка таким образом называется отладкой смешанного режима. См. Это сообщение в блоге для получения некоторых советов.

Я считаю, что это не поддерживается для 64-битных процессов... хотя хотелось бы ошибиться в этом вопросе.

Ответ 3

Для всех, кто использует WinDbg:

1 > Символы настройки

Посмотрите на эти команды. (Справка: в консоли .hh <command> )

.sympath
.sympath+ 
.symfix

2 > Настройка пути источника

.srcpath

3 > Загрузите расширение SOS для отладки программ с управляемым/смешанным режимом.

(Убедитесь, что вы правильно настроили путь расширения)

Добавьте Microsoft.NET\Framework\v2.0.50727 для x86, используя -

.extpath 

Установите контрольную точку для загрузки clr.

sxe ld:mscorwks

(F5/g) (Подождите, пока ModLoad BP на mscorwks.dll)

Удостоверьтесь, что у вас уже нет дублированного расширения sos. См:

.chain

Теперь мы готовы загрузить расширение sos.:)

.loadby sos mscorwks

4 > Перезагрузите все символы.

.reload

Теперь вы все настроены:)

(YMMV)

Ответ 4

Смешанная отладка не поддерживается в 64-битном режиме (как в Visual Studio 2008).