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

Точки останова не работают во время отладки собственной библиотеки Android в Visual Studio 2015

При новой установке Visual Studio 2015 я создал приложение для Android и родную библиотеку Android. Функции из родной библиотеки указаны в коде приложения через директивы DllImport.

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

Когда я выбираю "Отладчик Microsoft", точки останова не работают вообще. Во время сеанса отладки все точки останова отмечены как отключенные, и когда я указываю на них, появляется следующее сообщение:

The breakpoint will not currently be hit. Module containing this breakpoint has not yet loaded.

Что мне нужно сделать, чтобы отлаживать собственные библиотеки Android в VS2015?

4b9b3361

Ответ 1

У меня была такая же проблема, и я думаю, что понял это.

Отладчик Xamarin может только отлаживать управляемый (то есть С#) код. Точки останова работают только с отладчиком Xamarin, если отлаживаемый проект является управляемым проектом. Они не работают, если проект является родным или родной библиотекой.

Отладчик Microsoft может только отлаживать собственный (например, C/С++) код. Точки останова работают только с отладчиком Microsoft, если отлаживаемый проект является родным приложением или собственной библиотекой или если он подключен к уже запущенному процессу Android.

Я смог использовать оба отладчика одновременно для отладки гибридного (управляемого + родного) приложения, выполнив следующую процедуру:

  • В свойствах управляемого приложения выберите "Xamarin" для отладчика: Снимок экрана страницы с управляемым приложением, показывающей отладчик Xamarin selected
  • В свойствах проекта собственной библиотеки в разделе "Отладка" убедитесь, что "Отладка и пакет для запуска" соответствуют целевому и APK, выбранному для управляемого приложения. Это позволит убедиться, что оба отладчика направлены в одно и то же приложение для Android, а также позволяют запускать приложение непосредственно с отладчиком Microsoft (путем выбора собственной библиотеки в качестве цели для отладки), если вы хотите только отладить собственную часть. Вам, вероятно, потребуется найти APK, и для цели вам может понадобиться ввести целевое имя, если оно не отображается в раскрывающемся списке (имена целей - это строки, которые отображаются "adb devices" ). Параметры отладки для основной части приложения для Android
  • Выберите управляемое приложение для отладки и убедитесь, что целевая архитектура и устройство верны на панели инструментов отладки. Например, если я хочу отлаживать свой Nexus 4, который использует ARM-архитектуру, я делаю так, чтобы ARM был выбран для цели, а не "Any CPU", а мой Nexus 4 был установлен как моя цель: Отладка панели инструментов для отладки гибридного управляемого/Android-приложения
  • Начать отладку. На этом этапе отладчик Xamarin активен, и контрольные точки в коде С# должны работать.
  • Пока управляемое приложение все еще работает или отлаживается, щелкните правой кнопкой мыши проект собственной библиотеки и выберите "Отладка" > "Присоединить к процессу Android". Если все пойдет хорошо, отладчик Microsoft запустится и приложится к приложению (за исключением "родной стороны", так сказать). Параметры меню для прикрепления отладчика Microsoft к

Я сделал короткое видео, чтобы продемонстрировать это: Отладочный и собственный код отладки от Android с помощью Visual Studio 2015

Ответ 2

Кончик, описанный в этой статье, решил мою проблему:

https://blogs.msdn.microsoft.com/cesardelatorre/2016/02/06/solving-issue-with-vs-android-emulator-xamarin-apps-and-intel-skylake-processor-i-e-when-using-a-microsoft-surface-book-i7-surface-pro-4-etc/

РЕШЕНИЕ:

И мы были правы! Проблема связана с Hyper-V в Windows 10 при работе на новейших процессорах Intel (Skylake). (Спасибо, Майк, из команды VS Android Emulator, которая предложила это возможное обходное решение).

Горячие, чтобы исправить:

  • В диспетчере Hyper-V щелкните правой кнопкой мыши на виртуальной машине Android, которую вы используете.
  • Нажмите "Настройки"
  • Разверните "Процессор", выберите "Совместимость"
  • Включить "Перенести на физический компьютер с другой версией процессора"

Ниже вы можете выбрать флажок. Виртуальная машина Hyper-V > Конфигурации > Процессоры > Совместимость