Как заставить Visual Studio выполнять отладку приложения для Android?

Я использую Visual Studio 2017 для создания и развертывания NativeActivity на моем устройстве Android. Он собирается и развертывается без проблем, но я не могу установить точки останова.

Перед запуском я могу добавить точку останова к строке (например, к первой строке android_main()), и маленький красный кружок появится слева от этой строки в среде IDE, как и следовало ожидать.

Но после установки и запуска приложения точка останова не срабатывает, потому что красный круг стал белым — это говорит об отсутствии символов отладки.

Я проверил, что создаю отладочную версию, и подтвердил, что файл APK больше и имеет символы отладки с помощью Android Studio.

На данный момент мне кажется, что сама Visual Studio запуталась и почему-то не распознает символы отладки.

Я добавил -g к параметрам C++ вручную, а также добавил строку Gradle PackagingOptions.doNotStrip '**.so'. Но все равно эта проблема сохраняется.

Что может вызвать такое поведение в Visual Studio и как его исправить?


person Bungles    schedule 24.03.2021    source источник


Ответы (1)


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

Поэтому вам нужно привязать приложение NativeActivity c++ к управляемому приложению Xamarin (Acttach to Process), чтобы получить то, что вы хотите.

1) создайте приложение c# xamarin для Android, а затем введите этот apk-файл, управляемый xamarin, в Свойства приложения NativeActivity c++ --›Отладка --› Пакет для запуска

2) сначала запустите приложение Xamarin C#, а затем активируйте отладчик Xamarin. Пока управляемое приложение все еще работает или отлаживается, щелкните правой кнопкой мыши проект собственной библиотеки и выберите Отладка --› Присоединить к процессу Android.

Вот пример, предоставленный Ричардом Уолтерсом. и предоставил подробную информацию.

person Sara Liu - MSFT    schedule 25.03.2021
comment
У меня есть еще одно приложение для Android, которое также является NativeActivity, и Visual Studio может устанавливать точки останова и отлаживать. Единственная разница между этими двумя приложениями заключается в том, что работающее приложение было создано с помощью ANT, а не отлаживаемое — с помощью Gradle. Они оба развертывают и запускают приложение, просто отладка не работает. - person Bungles; 25.03.2021
comment
Попробуйте добавить расположение файла xxx.pdb в Инструменты-->Параметры-->Отладка-->Символы-->Расположение файла символов. После этого во время отладки откройте меню Отладка --> Windows --> Модули, чтобы проверить, загружен ли файл pdb или нет. Вы также можете щелкнуть правой кнопкой мыши по этой dll --> загрузить символ - person Sara Liu - MSFT; 26.03.2021
comment
Код Android не имеет файлов .pdb. - person Bungles; 30.03.2021