Отладка приложений
Практическое руководство. Отладка приложений служб Windows
- 03/30/2017
- Время чтения: 9 мин
- Соавторы
Служба должна запускаться из диспетчера управления службами, а не из Visual Studio.A service must be run from within the context of the Services Control Manager rather than from within Visual Studio.
Поэтому, процесс отладки службы сложнее, чем отладка приложений Visual Studio других типов.For this reason, debugging a service is not as straightforward as debugging other Visual Studio application types.
Для отладки службы необходимо запустить службу, а затем подключить отладчик к процессу, в котором она выполняется.To debug a service, you must start the service and then attach a debugger to the process in which it is running.
Приложение можно отлаживать с помощью всех стандартных средств отладки Visual Studio.You can then debug your application by using all of the standard debugging functionality of Visual Studio.
Внимание!
Не следует присоединять к процессу, если неизвестно, что собой представляет данный процесс, и неясны последствия подключения к процессу (включая даже уничтожение этого процесса).
You should not attach to a process unless you know what the process is and understand the consequences of attaching to and possibly killing that process. Например, при подключении к процессу WinLogon и последующей остановке процесса отладки система будет остановлена, так как она не может работать без данного процесса.
For example, if you attach to the WinLogon process and then stop debugging, the system will halt because it can’t operate without WinLogon.
Отладчик можно прикреплять только к выполняющейся службе.You can attach the debugger only to a running service. Процесс подключения прерывает текущую работу службы (фактически он не останавливает и не приостанавливает ее).
The attachment process interrupts the current functioning of your service; it doesn’t actually stop or pause the service’s processing. То есть, если служба уже выполнялась на момент запуска процесса отладки, она по-прежнему технически находится в состоянии “Started” в ходе отладки, однако ее работа приостанавливается.
That is, if your service is running when you begin debugging, it is still technically in the Started state as you debug it, but its processing has been suspended.
После присоединения к процессу можно установить точки останова и использовать их для отладки кода.After attaching to the process, you can set breakpoints and use these to debug your code.
После выхода из диалогового окна, используемого для подключения к процессу, вы продолжаете оставаться в режиме отладки.Once you exit the dialog box you use to attach to the process, you are effectively in debug mode.
Для запуска, остановки, приостановки и продолжения работы служб (то есть, попадания в заданные точки) можно использовать диспетчер управления службами.
You can use the Services Control Manager to start, stop, pause and continue your service, thus hitting the breakpoints you’ve set. Позднее эту фиктивную службу можно удалить после успешного завершения отладки.You can later remove this dummy service after debugging is successful.
В этой статье рассматривается процесс отладки службы, выполняемой на локальном компьютере (также можно выполнять отладку служб Windows, которые выполняются на удаленном компьютере)..postlight.com”>
Источник: https://docs.microsoft.com/ru-ru/dotnet/framework/windows-services/how-to-debug-windows-service-applications
Отладка Python приложений с помощью pdb
Вы из тех, кто для поиска багов использует функцию print(), а не специализированные утилиты? Тогда вам не помешает побольше узнать о спектре возможностей, предоставляемых отладчиками. Они сэкономят ваше время и упростят отладку.
Отладка Python-кода с помощью print
Как уже говорилось ранее, кто-то используют print() для отображения информации, которая помогает понять, что происходит в коде. Кто-то использует логи для тех же целей, но давайте не путать использование логов на продакшене и случаи, когда их используют во время поиска багов в коде и после удаляют.
Но самая большая проблема в использовании print() — это необходимость вносить изменения в код и перезапускать приложение, чтобы увидеть изменения. Давайте разберёмся, почему отладчики эффективнее.
Команды отладчика Python
Главная задача отладчика — предоставить возможность заглянуть в процесс выполнения кода. Так, например, можно просмотреть стек вызовов, узнать значения переменных, установить брейкпоинты или запустить выполнение кода построчно. Можно провести аналогию с тем, как автомеханик заглядывает под капот автомобиля и начинает перебирать деталь за деталью, пока не найдет причину поломки.
Если вы работаете с Python, то можете не только просматривать код во время отладки, но даже запускать код из командной строки или изменять значения переменных на лету.
Python есть встроенный отладчик под названием pdb. Это простая консольная утилита, которая обладает основной функциональностью для отладки кода. Но если вы ищете что-то более продвинутое, то стоит обратить внимание на ipdb – отладчик с функциональностью из IPython.
Проще всего вызвать pdb из кода, где вы работаете:
import pdb; pdb.set_trace()
Как только интерпретатор доберётся до этой строчки, запустится отладчик и в консоли будут доступны новые команды.
list (l)
Эта команда покажет часть кода, на выполнении которой сейчас находится интерпретатор. Можно передать два аргумента first и last для просмотра определённого участка кода. Если указать только first, то будет выведен код вокруг искомой строки.
up (p) и down (d)
Эти команды используются для передвижения по стеку вызовов. С их помощью можно отследить, откуда была вызвана текущая функция.
step (s) и next (n)
Другая пара не менее важных команд. С их помощью можно выполнять код построчно. Единственное различие между ними в том, что next(n) перейдёт к следующей строке вне зависимости от вызываемых функций, а step(s) перейдёт в вызванную функцию, если это возможно.
break (b)
Эта команда позволяет создавать брейкпоинты без внесений изменений в код. Ниже разберём этот этап более детально.
Краткий список команд pdb:
- args (a) — выводит аргументы функции;
- continue (c) или (cont) — продолжит выполнение до первого брейкпоинта или до завершения программы;
- help (h) — выводит список доступных команд или подсказки по определённой команде;
- jump (j) — перепрыгивает к выполнению указанной строчки кода;
- list (i) — выводит исходный код программы вокруг выбранной строки;
- expression (p) — выводит значение выражения;
- pp — выводит значение в «красивом» виде;
- quit или exit (q) — отменяет выполнение программы;
- return (r) — завершает выполнение текущей функции.
Продолжаем изучать отладчик Python
Рассмотренный ранее способ работы с отладчиком требовал внесения изменения в код для вывода чего-нибудь или установки брейкпоинта. Но часто при работе с внешними библиотеками появляется необходимость в их отладке. Конечно, можно открыть исходный код библиотеки и вызвать pdb.
Но теперь есть возможность запускать приложение напрямую из отладчика без внесения изменения в код. Для этого воспользуемся следующей командой:
$ python3 -m pdb
Давайте разберём на примере. Есть простое приложение, которое отслеживает рабочее время. Для её работы используется библиотека requests, отвечающая за выполнение HTTP-запросов. Попробуем прервать выполнение во время запроса. Как это сделать? Запустим приложение через отладчик и установим брейкпоинт внутри библиотеки requests.
$ python3 -m pdb run.py
> /Users/………………………/run.py(1)()
-> from TimeLog.app import run_app
(Pdb) b requests/sessions.py:555
Breakpoint 1 at /………………../lib/python3.6/site-packages/requests/sessions.py:555
(Pdb) c
Как можно заметить, не нужно указывать полный путь до библиотеки. Можно указать относительную ссылку от sys.path. Таким же образом можно отлаживать и ваше приложение.
Теперь куда проще отлаживать код. Не надо вносить изменения в приложение или во внешние библиотеки.
Но что делать, если в приложении происходит много вызовов, а вам надо обработать только какой-то определённый? Можно точно указать условие, при выполнении которого отладчик будет прерывать выполнение приложения.
В данном примере прерывание произойдёт только в случае, если json будет иметь в себе ключ time_entry.
$ python3 -m pdb run.py > /Users/…../run.py(1)()
-> from TimeLog.app import run_app
(Pdb) b requests/sessions.py:555, json is not None and ‘time_entry’ in json
Breakpoint 1 at /Users/……/lib/python3.6/site-packages/requests/sessions.py:555 (Pdb) c
Отладка кода Django
Если вы используете Django, то скорее всего знаете, что, если в настройках значение параметра DEBUG установлено как True, то для каждого исключения будет выводиться отдельная страница с указанием типа исключения, стек вызовов, локальные переменные и т.д.
Если вы хотите прокачать отладчик, то установите django-extensions и используйте команду runserver_plus для запуска сервера. Также можно указать пароль для доступа к отладке следующей командой:
WERKZEUG_DEBUG_PIN=1234 ./manage.py runserver_plus
Прим. перев. В WERKZEUG, начиная с версии 0.11, появилась возможность доступа по паролю к отладчику. Это сделано для повышения безопасности при попытках несанкционированного доступа.
Если вы используете django-extensions, то получите страницу со всеми вызовами, кодом и окном отладчика.
Процесс отладки осуществляется с помощью WSGI библиотеки Werkzeug.
Существует множество способов отладки приложений, но специализированные инструменты могут дать вам огромное преимущество по сравнению с другими разработчиками и помогут сэкономить время и силы при поиске багов.
Перевод статьи «Debugging Python Applications with pdb»
Кирилл Поздеев, переводчик
Источник: https://tproger.ru/translations/debugging-python-with-pdb/
Отладка программ
Описаны рекомендации, расположение, значения, управление политикой и соображения безопасности для параметра политики безопасности Отладка программ.
Справка
Этот параметр политики определяет, какие пользователи могут подключаться к процессам или открывать их, даже в отношении тех процессов, которыми они не владеют.
Это право не нужно назначать разработчикам, выполняющим отладку собственных приложений. Оно необходимо разработчикам, которые выполняют отладку новых системных компонентов.
Это право пользователя обеспечивает доступ к важным компонентам операционной системы.
Константа: SeDebugPrivilege
Возможные значения
- Пользовательский список учетных записей
- Не определено
Рекомендации
- Чтобы снизить уровень уязвимости в системе безопасности, назначайте его только доверенным пользователям.
Расположение
Конфигурация компьютераПараметры WindowsПараметры безопасностиЛокальные политикиНазначение прав пользователя
Значения по умолчанию
По умолчанию это право предоставлено членам группы “Администраторы”.
В следующей таблице приведены фактические и действующие значения по умолчанию политики для последних поддерживаемых версий Windows. Значения по умолчанию также указаны на странице свойств политики.
Тип сервера или объект групповой политикиЗначение по умолчанию
Политика домена по умолчанию | Не определено |
Политика контроллера домена по умолчанию | Администраторы |
Параметры автономного сервера по умолчанию | Администраторы |
Действующие параметры контроллера домена по умолчанию | Администраторы |
Действующие параметры рядового сервера по умолчанию | Администраторы |
Действующие параметры клиентского компьютера по умолчанию | Администраторы |
Управление политикой
В данном разделе описываются компоненты и средства, доступные для управления этой политикой.
Чтобы этот параметр политики вступил в силу, перезагружать устройство не требуется.
Изменения прав пользователя вступают в силу при его следующем входе в учетную запись.
Групповая политика
Параметры применяются к объекту групповой политики (GPO) в следующем порядке, что переопределяет параметры на локальном компьютере при следующем обновлении групповой политики.
-
Параметры локальной политики
-
Параметры политики сайта
-
Параметры политики домена
-
Параметры политики подразделений
Если локальный параметр неактивен (выделен серым цветом), это значит, что в настоящий момент его контролирует объект групповой политики.
Соображения безопасности
В этом разделе описывается, каким образом злоумышленник может воспользоваться компонентом или его конфигурацией, как применить меры противодействия и каковы возможные негативные последствия реализации этих мер.
Уязвимость
Пользователь, которому предоставлено право Отладка программ, может получить конфиденциальные данные, хранящиеся в памяти устройства, а также доступ к ядру или структурам приложения.
В некоторых типах атак это право используется для извлечения хэшированных паролей и другой секретной информации, а также для внедрения вредоносных программ.
Читайте также: Радиоприемные устройства, тюнеры, антенны
По умолчанию право Отладка программ назначается только администраторам, что позволяет снизить риск использования этой уязвимости.
Меры противодействия
Удалите учетные записи всех пользователей и групп, которым не требуется право Отладка программ.
Возможные последствия
Если отозвать это право, никто не сможет отлаживать программы. Однако лишь в редких случаях требуется реализовать такую возможность на рабочих устройствах.
При возникновении проблем, требующих отладки приложения на рабочем сервере, последний можно временно переместить в другое организационное подразделение и назначить право Отладка программ отдельной групповой политике для этого подразделения.
Связанные разделы
Назначение прав пользователя
Источник: https://technet.microsoft.com/ru-ru/library/mt629214(v=vs.85).aspx
Отладка программы
Теги: Отладка, бряк, брейкпоинт, шаг с обходом, шаг с заходом, шаг с выходом, условные точки останова, отладка на visual studio, отладка на борланде, отладка на embarcadero, отладка на code gear, watchlist.
Часто бывают ситуации, когда код скомпилировался, но работает не так, как предполагалось. Обнаружить ошибку просмотром кода не удалось и логгирование не особо помогает. Тогда можно воспользоваться дебаггером, пошагово пройти программу (благо, они у вас совсем небольшие), проследить состояние переменных и ход выполнения приложения или дизассемблировать код.
Пусть у нас имеется следующий код
#include
#include
#include
#include void printArray(int i, int j_max, int k_max) { int j, k; for (j = 1; j
Необходимо научиться работать с отладчиком: пошагово проходить весь код, устанавливать точки останова программы, просматривать значения переменных во время работы.
Visual Studio
Выполните ОТЛАДКА | Шаг с обходом, или нажмите F10. Вы получите примерно такую картину, как на рисунке. Жёлтая стрелка указывает, какой оператор будет выполнен. Используя шаг с обходом (F10), шаг с заходом (F11) и шаг с выходом (Shift + F11) можно исполнять программу.
Вызов отладчика на Visual Studio Express
Шаг с обходом выполняет оператор, но не заходит в него. Например, если это вызов функции, то он будет произведён, но внутрь функции мы не попадём.
Шаг с заходом позволяет «зайти» в оператор, если он сложный. Например, перейти к функции, которая выполняется.
Шаг с выходом позволяет вернуться на уровень выше, если мы совершили шаг с заходом.
Окошко «Локальные» снизу показывает текущее значение локальных переменных. Во время захода в функцию в значениях хранится мусор.
Нажимая F10, дойдите до строки 23, где происходит вызов функции printArray. Если вы нажмёте F11, то перейдёт внутрь функции printArray.
Шаг с заходом позволяет перейти в функцию
Чтобы выйти из этой функции, можно нажать Shift + F11.
Если часть программы необходимо пропустить, то ставят точку останова (breakpoint, “бряк”). Для этого кликают по левому полю, рядом со строчкой, на которой необходимо остановиться, или нажимают F9.
Останов можно осуществить только на операторе, нельзя остановиться, например, на определении переменной или пустой строке. В этом случае отладчик «скинет» точку останова до ближайшего валидного места.
Когда выполнение программы доходит до оператора, рядом с которым стоит breakpoint, то происходит останов
После того, как точка останова выставлена, можно нажать F5. Программа будет выполняться до тех пор, пока не встретит точку останова. Это особенно удобно, когда нужно обойти ввод данных.
Точка останова может иметь ряд условий, например, число попаданий, фильтры, действие, которое выполняется при остановке и т.д. Для того, чтобы задать дополнительные свойства, кликните правой кнопкой мыши на точке и в выпадающем меню выберете нужный пункт.
Останов выполнения программы может быть осуществлён по условию
Пусть, например, мы хотим остановить выполнение программы тогда, когда значение локальной переменной i внутри цикла в функции стало равно 2. Для этого напишем соответствующее условие
Теперь, если нажать на «Продолжить», то программа будет работать до тех пор, пока значение локальной переменной i внутри функции не станет равным 2.
Borland, Code Gear, Embarcadero etc
Выполните Run | Step over, или нажмите F8. Вы получите примерно такую картину, как на рисунке. Синяя стрелка указывает, какой оператор будет выполнен. Используя шаг с обходом (F8), шаг с заходом (F7) можно исполнять программу.
Кроме этого, имеются дополнительные возможности, например исполнение кода до курсора (F4), исполнение до тех пор, пока не будет осуществлён возврат (Shift + F8), просматривать состояние переменных и выражений (Run | Inspect), изменять значение переменных (Ctrl + F7) и добавлять список отслеживаемых переменных и выражений (Ctrl + F5).
Вызов отладчика на Embarcadero RAD Studio XE2
Шаг с обходом выполняет оператор, но не заходит в него. Например, если это вызов функции, то он будет произведён, но внутрь функции мы не попадём.
Шаг с заходом позволяет «зайти» в оператор, если он сложный. Например, перейти к функции, которая выполняется.
Шаг с выходом позволяет вернуться на уровень выше, если мы совершили шаг с заходом.
Окошко «Local Variables» слева снизу отображает текущее значение локальных переменных. Во время захода в функцию в значениях хранится мусор.
Нажимая F8, дойдите до строки 23, где происходит вызов функции printArray. Если вы нажмёте F7, то перейдёт внутрь функции printArray.
Шаг с заходом позволяет перейти в функцию
Если часть программы необходимо пропустить, то ставят точку останова. Для этого кликают по левому полю, рядом со строчкой, на которой необходимо остановиться.
Останов можно осуществить только на операторе, нельзя остановиться, например, на определении переменной или пустой строке. В этом случае отладчик отметит крестом нерабочую точку останова.
Во время отладки все возможные точки останова выделены синим, если по ним кликнуть, то они становятся активными красными.
Синие метки – возможные точки останова, красные – активные
После того, как точка останова выставлена, можно нажать F9. Программа будет выполняться до тех пор, пока не встретит точку останова. Это особенно удобно, когда нужно обойти ввод данных.
Точка останова может быть иметь ряд условий, например, число попаданий, фильтры, действие, которое выполняется при остановке и т.д. Для того, чтобы задать дополнительные свойства, кликните правой кнопкой мыши на точке и в выпадающем меню выберете Breakpoint Properties….
Пусть, например, мы хотим остановить выполнение программы тогда, когда значение локальной переменной i внутри цикла в функции стало равно 2. Для этого напишем соответствующее условие в поле condition
Останов выполнения программы может быть осуществлён по условию
Теперь, если нажать на «Продолжить», то программа будет работать до тех пор, пока значение локальной переменной i внутри функции не станет равным 2.
Слева расположено окно Watchlist. Watchlist позволяет добавлять отслуживаемые переменные и выражения. Кликните два раза по полю и появится диалоговое окно. Пусть, например, мы хотим трассировать сумму переменных i и j. Запишем в watchlist сумму
Watchlist позволяет отслеживать значения переменных и выражений во время отладки
ru-Cyrl 18- tutorial Sypachev S.S. 1989-04-14 sypachev_s_s@mail.ru Stepan Sypachev students
Q&A
Всё ещё не понятно? – пиши вопросы на ящикТернарный оператор и оператор запятая
Источник: https://learnc.info/c/debug.html
Включение режима разработчика в Android
Сегодня попробуем разобраться с одним интересным пунктом меню, в разделе Настройки — Для разработчиков. В этом меню размещены 37 подпунктов для гибкой настройки и глубокого управления своим устройством на Android. Далее предлагаем ознакомиться с каждым из них и рассмотреть скриншоты самого меню для разработчиков.
Для того чтобы включить отоброжение пункта “Для разработчиков” в списке настроек, нужно провести следующие действия:
- Заходим в меню настроек
- Переходим в пункт О телефоне
- Находим строку Номер сборки
- Нажимаем по нему семь раз.
Если появилось вот такое уведомление, то у нас все получилось!
Меню “Для разработчиков” теперь будет находится в списке в настройках гаджета. На Android 4.4 пункт размещен между “Печать” и “О телефоне”!
Вот список и описание всех функций, которое дает нам скрытое меню:
- Создание отчета об ошибке — кнопка неактивна при нормальной работе устройства.
- Пароль для резервного копирования — возможность защитить полные резервные копии данных смартфона или планшета. Пароль вводится вручную и создается самым пользователем.
- Не выключать экран — активация этого действия приведет к постоянной подсветки экрана в процессе зарядки устройства.
- Выберите среду — доступны для выбора две рабочие среды: Dalvik и ART. Последняя более новая и призвана повысить уровень производительности приложений и устройства в целом. Включить журнал трансляции — команда служит для сохранения всех пакетов HCI Bluetooth в файле.
- Статистика процессов — выполнение этой операции позволит вести статистику запущенных процессов.
- Отладка по USB — включает режим отладки при подключении к компьютеру при помощи USB-кабеля.
- Запретить доступ для отладки с помощью USB на всех компьютерах , на которых вы входили в аккаунт.
- Отчеты об ошибках — кнопка неактивна в штатном режиме. При активации, устройство начнет отображать в меню опцию отправки отчета об ошибке.
- Фиктивное местоположение — удивительная функция, которая умеет маскировать текущее местоположение владельца с гаджетом и выдавать ложные координаты.
- Выберите приложение для отладки — можно задать определенные приложения для возможности их отладки.
- Подождите пока подключится — приложение ожидает подключения отладчика в штатном режиме. Кнопка неактивна.
- Установленные через USB — функция позволяет проверять на безопасность приложения, устанавливаемые через ADB/ADT. Кнопка неактивна.
- Сертификация беспроводных … — отображает параметры сертификации беспроводных мониторов.
- Показывать нажатия — при активации кнопки, реализуется отображения точки в местах нажатия на экран.
- Отображать касания — проводится визуализация на экране нажатия и жестов.
- Показ. обнов. поверхности — осуществляется подсвечивание окон полностью при их обновлении.
- Показывать границы элементов — обеспечивает отображение границ клипа, поля и т.д.
- Написание справа налево — отображает написание текстов справа налево для всех языков.
- Окно: масштаб — установка масштаба анимации от 0,5х до 10х. Также можно отключить анимацию вообще.
- Переход: масштаб — установка масштаба перехода от 0,5х до 10х. Отключение анимации также возможна.
- Скорость анимации — можно задать скорость анимации гаджета в интервале от 0,5х до 10х. Анимацию можно отключить вообще.
- Эмуляция дополнительных экранов — интересная опция, которая может провести эмуляцию дополнительных экранов на основном физическом экране устройства. Включив эту опцию, пользователь увидит еще один экран, который продублирует основной. Размеры дополнительного экрана настраиваются самостоятельно.
- GPU-ускорение — можно поставить галочку и, тем самым, всегда использовать GPU для двухмерного рисования.
- Показывать обновление экрана — поставленная галочка обеспечит подсветку области экрана при отрисовке GPU.
- Показывать аппаратные обновления — задействование этой функции выделит аппаратные уровни зеленым при обновлении.
- Отладка наложения — этот пункт содержит три возможных варианта для выбора: 1) выкл.; 2) показывать области наложения; 3) выделять области определенного цвета; 4) показывать число объектов.
- Отладить операции непрямоугольного усечения — на этом этапе можно провести три действия: 1) отключить опцию; 2) непрямоугольное сечение; 3) тестирование команды рисование зеленым.
- Включить 4х MSAA — поставив галочку, пользователь (или уже разработчик) включает 4х MSAA в приложениях OpenGL ES 2.0.
- Отключить аппаратные наложения — активация пункта повлечет за собой постоянное использование GPU при компоновке экрана.
- Включен строгий режим — данный режим будет подсвечивать экран Android-устройства во время длительных операций.
- Показывать загрузку ЦП — при активации этого действия, смартфон отобразит на своем экране дополнительное окошко с графическим отображением текущей загрузки ЦП. Запись времени работы GPU — название данного пункта говорит само за себя.
- Включить трассировку OpenGL — имеет четыре возможным варианта развития событий: 1) нет данных; 2) Logcat; 3) Systrace; 4) Список вызовов в glGetError/
- Не сохранять действий — данный пункт меню относится к приложениям, активация его приведет к удалению сводки действий после их завершения.
- Лимит фоновых процессов — полезная функция. Она способна ограничить количество работающих приложений в фоновом режиме.
- Все ANR — птичка, поставленная напротив данного пункта обеспечит уведомления пользователя о том, что приложение лагает (авт.) или не отвечает.
Читайте также: Автомобильный контроллер подсветки приборной панели
Источник: http://LookDevices.ru/how-to-turn-on-developer-mode-in-android.html
Приложение для отладки по usb на планшете. Как сделать отладку по USB и для чего вообще это нужно —
Добрый день. Частенько случается, что нам необходимо проверить своё устройство с операционной системой “Андроид” при помощи компьютера. Будь то общее тестирование или обычная диагностика, на предмет выявления каких-либо недостатков.
Для этого требуется включить, так называемый режим “Отладка USB”. Как бы она не звучало пугающе, на самом деле она очень просто и доступна не только гуру в гаджетах, но и по силам самому обычному новичку.
Что такое USB отладка Андроид, как включить эту отладку по USB через ПК на свой Андроид, мы сможем узнать из нашей статьи.
Сразу скажем, что подключение к нашему персональному компьютеру гораздо предпочтительней, чем работа с эмулятором ПК.
На всякий пожарный вставляем небольшую видео инструкцию как выставить “Отладку по USB”, ну а чуть ниже поговорим более подробно о всех методах и правилах этой процедуры.
Что и в какой последовательности необходимо делать
В большинстве случаев режим необходимой нам отладки по USB, у всех производителей, можно найти и выставить через меню “Настройки”. В нём обычно находится подменю “Разработка”или “Для разработчиков”. И хоть мы и не являемся никакими разработчиками, но всё же смело находим там искомое “Отладка по USB” и не мудрствуя лукаво ставим там галку.
Можно подумать, что на этом все наши мытарства окончились, но не тут то было. Вполне возможно, что именно в Вашем меню нет такой опции. Вот те раз. Это уже не ко мне, а к самым что ни есть настоящим разработчикам. Зачем они так сделали? Непонятно. Может чтобы не все могли пошарить в устройстве и наломать там дров.
Самый простой способ включения отладки ЮСБ
В случае, если такового в нашем меню нет, то попробуем пойти другим путём. Несколько разновидностей получения отладки по USB на разных ОС “Андроид”. Если у Вас Android 2.2 3.0, то попробуем сначала войти в тоже самое “Меню”, далее в Настройки”, потом в “Приложения», затем в “Разработка”. Вполне возможно, что там уже будет стоять пункт”Отладка по USB”.
Для всех владельцев Android 4.2 и выше придуман следующий весьма хитрый путь. Опять идём в “Меню”, следом в «Настройки”, в «О смартфоне/О планшете”.
Находим здесь «Номер сборки» и сотворим некие шаманские действия.
Жмём по нему 8-10 раз и у нас при очередном заходе в “Настройки” непонятным образом вдруг появляется “Для разработчиков” и “Отладка по USB». Остаётся только опять поставить галку.
Будем считать, что у нас это получилось и эта отладка включена. При первом же подключении к нашему ПК или вводу какой-либо команды, произойдёт запрос на доверие к компьютеру в данный момент подсоединённому.
Так мы полностью доверяем своему компьютеру, то ставим галку, жмём “Ок”. Всё. Отладка включена. Если вдруг компьютер не хочет определить наше устройство, то попробуйте следующее. Проверьте не заблокирован ли вдруг Ваш смартфон/планшет.
Разблокируйте его, проверьте ещё раз отладку.
Если опять не получается, то попробуйте обновить/заменить/переустановить USB драйвера на своём ПК. Примечание: желательно использовать только порт USB 2.0, а не такой порт как USB 3.0. Всё же смею быть уверенным, что у Вас всё получилось и режим наладки по ЮСБ включился.
Режим «Отладка по USB » всегда можно найти в меню настроек смартфона, в не зависимости от марки аппарата или версии операционной системы.
Однако стоит заметить, что конечный путь, по которому можно добраться до этого режима может отличаться.
А если Вы решили включить usb отладку , то наверняка пытаетесь или это требует некая программа, например для восстановления удаленных файлов на android.
Вариант первый (актуален для большинства версий ОС Android)
Для начала вам необходимо войти в меню настроек. После этого в нижних пунктах найти «Разработка» и отметить галочкой пункт «Отладка по USB».
Вариант второй (актуален для большинства планшетов)
Здесь алгоритм действий идентичен первому варианту, за исключением пункта «Разработка». В ОС Android версии ниже 2.2 данный пункт называется «Для разработчиков».
Вариант третий (для смартфонов, работающих на версиях андроид 2.2 – 3.0)
Вариант четвёртый
В некоторых смартфонах Android производители интегрируют свою фирменную оболочку, а соответственно немного видоизменяют системное меню настроек. Поэтому, если все предыдущие пункты для вас не действительны, попробуйте следующее: в меню настроек опуститесь к нижнему пункту и нажмите «Ещё». В открывшимся окне выбираем «Параметры разработчика» и отмечаем пункт «Отладка по USB».
Вариант пятый (для пользователей с Android 4.2 и выше)
В смартфонах с более новой версией операционной системы режим «Отладка по USB» скрыт от обывателя.
Для того, чтобы сделать его видимым необходимо в настройках войти в меню «Об устройстве» и несколько раз (примерно 5-10) нажать на надпись «Номер сборки». Далее необходимо вернуться в «Настройки».
После проделанных операций должен появиться пункт «Для разработчиков» – отмечаем галочкой пункт «Отладка по USB».
Включение отладки по usb на android 5.0 Lollipop
Для включения отладки на android 5.0 Lollipop необходимо выполнить порядок действий из 5 пункта.
Готово!
Отладка на Андроид 6 Marshmallow и Андроид 7 Nougat
Включается точно также как и – главное стать “разработчиком” и уже в этом пункте найдёте переключатель для включения отладки!
Насколько бы не был продвинутым смартфон – это все еще зависимое устройство. Во многих случаях для работы с мобильным устройством все еще необходим персональный компьютер. В частности, когда речь заходит о мобильной разработке или восстановлении устройства после неудачной прошивки.
Например, если гаджет вышел из строя, для переустановки системы потребуется кабельное (через USB) подключение смартфона к ПК. Для того чтобы компьютер смог обнаружить ваш телефон или планшет устройство переводят в режим отладки.
В данном материале попытаемся рассказать, как включить отладку по USB на Андроид и для чего еще она может понадобиться.
Что такое отладка по USB – для чего она нужна
Если не ударяться в технические особенности, то режим отладки (этот режим также называют дебаг-режимом) – это функция Android-гаджетов, созданная для тестирования новых программных продуктов. Ее используют разработчики, чтобы оценить работоспособность своих приложений.
Отладка по USB позволяет выполнять следующие задачи:
- Тестирование и проверка приложений до выпуска их в Play Market.
- Получение ROOT-прав (взлом) мобильного устройства.
- Копирование файлов из корневой директории операционной системы.
- Установка программного обеспечения из сторонних источников.
- Установка неофициальных прошивок Андроид.
- Создание резервных копий устройств (архивация данных).
Как же включить режим отладки USB на Андроид
Включение отладки по USB с телефона или планшета производится через меню настроек. Эта опция обычно находится в параметрах для разработчиков или в меню специальных возможностей.
Нередко этот пункт меню скрыт, дабы обычные пользователи не смогли перейти в режим отладки и не нарушили работу системы. Обычно к этому прибегают именитые производители вроде Samsung или HTC, в то время, как китайские производители разрешают переводить включать режим отладки по USB на смартфоне без лишних вопросов.
Если вы являетесь владельцем устройства от Samsung или любого другого крупного бренда, скрывающего доступ к отладке, то вам придется проделать следующее:
- Открываем системные настройки.
- Переходим в подменю «О телефоне».
- Кликаем по номеру сборки системы до тех пор, пока устройство не переведет вас в статус разработчика.
- В новом статусе можно вновь попробовать зайти в раздел с параметрами для разработчиков и включить отладку по USB.
Включаем отладку по USB через компьютер
Данный метод будет полезен тем пользователям на устройствах которых по какой-то причине не работает тачскрин, разбит экран или нет возможности подключить USB-мышь.
Нередко для перехода в режим отладки необходимо подключение смартфона или планшета к компьютеру. Для этого придется воспользоваться рядом дополнительных инструментов и запастись терпением.
Итак, для перехода в данный режим через компьютер нужно сделать следующее (данный способ подходит для всех версий Андроид, включая 5.0, 6.0, 7,0 и выше):
- Для начала необходимо загрузить файлы Platform-Tools и QtADB-CWM (это файлы Recovery для восстановления устройств).
- Перемещаем эти файлы в корневую директорию компьютера на диск C.
- Загружаем архив Sqlite3 и перемещаем его в директорию Sqlite3_Windows на диске С (ее нужно создать самостоятельно).
- Переводим гаджет в режим восстановления и подключаем к компьютеру.
- Запускаем ранее загруженный файл QtADB.exe.
- После того, как открыли программу, находим там подпункт Advanced (Расширенные) и следим, чтобы папка data была подключена к компьютеру. Командная строка в приложении даст ответ Ready.
- Затем открываем подменю «Файлы». Оно разделено на два отдельных файловых менеджера. В левом ФМ открываем директорию Sqlite3_Windows, которая была создана до этого, а в правом открываем директорию /data/data/com.andoid.providers.settings/databases в Android.
- Находим файл settings.db в правом ФМ и перетягиваем в левый.
- После открываем меню «Пуск, выбираем пункт выполнить и вводим туда cmd.
- Запустится командная строка Windows.
- В нее по одной нужно ввести следующие команды:
- Снова переходим к приложению QtADB и обновляем данные в левой панели.
- После обновления перетаскиваем файл settings.db обратно в правую часть, где он и был ранее.
- Программа спросит нужно ли заменить существующий файл – соглашаемся.
- На этом все. Телефон можно использовать в режиме отладки.
Что делать если после включения отладки по юсб устройство все равно не определяется?
К сожалению, отладка по USB работает не всегда. Часто, даже после перехода в данный режим устройство не функционирует в нем должным образом. Почему подобное может произойти и какие меры предпринять для решения проблемы?
Источник: https://bazava.ru/the-application-for-debugging-on-usb-on-the-tablet-how-to-make-debugging-on-usb-and-for-what-in-general-it-is-necessary.html
Отладка приложений для Android без исходных кодов: native методы
В двух предыдущих статьях я рассказывал как отлаживать приложения для Android без исходного кода на Java и о некоторых особенностях установки breakpoints. Если уважаемый читатель ещё не ознакомился с этими статьями — я настоятельно рекомендую начать с них, а уже потом читать эту статью.
Так уж вышло что до сих пор я рассказывал исключительно об отладке байткода Dalvik и ни словом не обмолвился об отладке native методов. А ведь именно в native методах часто скрывается самое вкусное — хитрые защиты, интересные malware фичи, уязвимости нулевого дня.
Поэтому сегодня я сжато, без «воды», расскажу как отлаживать native методы без исходного кода на C/C++ (ну или на чем, уважаемый читатель, они у вас там написаны).
Что бы извлечь пользу из моего рассказа нужно быть уже немного «в теме».
В частности желательно что бы читатель
- понимал синтаксис Smali, мог вписывать в .smali файлы свой код и мог отличить декларации и вызовы native методов от обычных методов, умел пересобирать .apk файлы используя Apktool;
- представлял себе что такое Java Native Interface (JNI) и как это работает;
- знал для чего используются методы System.load(…) и System.loadLibrary(…), как они работают в Android, и по аргументам этим методов в Smali коде мог самостоятельно определить в каких .so библиотеках находятся JNI функции соответствующие тем или иным native методам;
- умел найти эти JNI функций в .so библиотеках;
- хотя бы на начальном уровне знал ассемблер ARM (в статье предполагается что отладка будет выполняться на устройстве с архитектурой ARM либо на эмуляторе который эту архитектуру эмулирует);
- имел какой-то опыт работы с gdb и gdbserver;
Читайте также: Практическое применение операционных усилителей. часть первая.
Вот пожалуй и все знания и навыки которые будут нужны читателю. Перейдём к инструментам.
Инструменты
Сегодня нам понадобится:
- gbd и gdbserver для ARM из последней версии Android NDK. Установка описана тут.
- Утилита adb из последней версии Android SDK. Установка описана здесь.
- Если отладка идёт на реальном Android-устройстве — на нём нужны права root.
Перейдём к подготовке.
Подготовка
Предполагается что читатель достаточно опытен что бы самостоятельно выполнить следующие подготовительные действия:
- Дизассемблировать .apk файл приложения с помощью Apktools, исследовать файлы в поддиректории папка/куда/дизассемблировали/приложение/smali и выяснить:
- какие native методы вызываются из байткода Dalvik;
- в какой .so библиотеке находятся соответствующие этим методам JNI функции;
- Вытащить эту .so библиотеку из поддиректории папка/куда/дизассемблировали/приложение/lib либо с устройства на котором будет производиться отладка, исследовать её и узнать как называются JNI функции которые соответствуют тем или иным native методам вызываемым из байткода Dalvik.
- Пересобрать .apk приложение с помощью Apktools с оцпией -d и загнать по отладку в NetBeans как написало в этой моей статье.
- Сделать так, что бы отладка в NetBeans остановилась после вызовов System.loadLibrary(…) или System.load(…), которые загружают .so с интересующими нас JNI функциями, но до первого вызова какого-либо из native методов. Можно использовать трюк о котором я писал тут.
Теперь, когда все приготовления закончены, можно переходить собственно к отладке.
Отладка
Идея в том, что бы загнать наше приложение сразу под два отладчика: под отладчик встроенный в NetBeans — что бы отлаживать байткод Dalvik, и под gdb — исключительно что бы отлаживать вызовы native методов. Звучит слегка странно, но на практике вполне себе работает. Хотя и не всегда — см. следующий раздел «Подводные камни».
Итак, если читатель выполнил все подготовительные действия из предыдущего раздела «Подготовка», то сейчас у него на устройстве или эмуляторе наверняка запущено пересобранное приложение, на компьютере открыт NetBeans и отладка стоит где-нибудь после вызова System.load(…) или System.loadLibrary(…), но ещё до первого вызова native метода. Причем читатель уже в курсе в какой библиотеке какие JNI функции каким native методам соответствуют. С этого мы и начнём.
Дальше идёт пошаговая инструкция. Она писалась для Windows, но думаю будет работать и для Linux и MacOS. Пожалуйста, следуйте инструкции в точности:
- Командной abd shell откройте ADB консоль вашего устройства или эмулятора. Найдите PID процесса вашего приложения воспользовавшись командой ps в ADB консоли. В этой же консоли выполните команду:gdbserver :5039 –attach %PID%
где %PID% и есть PID процесса вашего приложения. В ответ gdbserver должен вывести что-то вроде:
Attached; pid = %PID%
Listening on port 5039Начиная с этого момента отладка в NetBeans «замёрзнет». Т.е. вы конечно сможете там кликать на кнопки, но это бесполезно т.к. приложение которое вы пытаетесь отлаживать в NetBeans в данный момент остановлено под отладчиком GDB. Не паникуйте, всё так и должно быть!
- Откройте новую консоль на вашем компьютере, выполните командуadb forward tcp:5039 tcp:5039
на вашем компьютере.
- В этой же консоли запустите gdb из Android NDK:gdb libMyNativeLibrary.so
где gdb libMyNativeLibrary.so — та самая .so библиотека в которой находятся интересующие нас JNI функции. В результате откроется консоль gdb.
- В консоли gdb наберите следующие команды:(gdb) target remote :5039
После этих манипуляций консоли gdb должно появится сообщение наподобии
Remote debugging using :5039
0x4009d58c in ?? ()а в консоли ADB (она у нас ещё открыта, помните?) что-то типа
Remote debugging from host 127.0.0.1
- В консоли GDB выполните(gdb) info functions
что бы увидеть список функций. В списке среди прочих функций должны быть и интересующие вас JNI функции, что-то типа:
0x5b5f7bac Java_my_app_for_debug_MainActivity_coolNativeMethod
0x5b5f7c0c Java_my_app_for_debug_MainActivity_anotherCoolNativeMethod
0x5b5f7c1c Java_my_app_for_debug_MainActivity_theCoolestNativeMethodEver - В консоли GDB поставте breakpoints на адреса интересующих вас JNI функций, в нашем случае это(gdb) break *0x5b5f7bac
(gdb) break *0x5b5f7c0c
(gdb) break *0x5b5f7c1c - Возобновите выполнение вашего приложения с помощью команды c в GDB консоли. После выполнения этой команды, отладка в NetBeans «размёрзнется» и вы снова сможете отлаживать байткод Dalvik.
Теперь, каждый раз когда в байткоде Dalvik будет встречаться вызов native метода вроде
const/high16 v8, 0x4100
invoke-static {v8}, Lmy/app/for/debug/MainActivity;->theCoolestNativeMethodEver(F)V
отладка в NetBeans будет замирать, зато gdb будет вас радовать сообщениями вроде
Breakpoint 1, 0x5b5f7c1c in Java_my_app_for_debug_MainActivity_theCoolestNativeMethodEver () from libMyNativeLibrary.so
Вот это собственно оно и есть. Дальше x/i $pc, stepi — в общем вперёд отлаживать одну ARM-инструкцию за другой (помните я говорил в начале что ARM ассемблер будет нужен? — ну вот…)
Подводные камни
О, их тут много. Целый сад подводных камней. Вот наиболее запоминающиеся глюки, которые попались мне при использовании GNU gdb (GDB) 7.4.1 в связке с GNU gdbserver (GDB) 7.4.1 на Android 4.0.3 в устройстве Ainol Aurora (той, старой ещё):
- Если у вас после некоторого времени gdb регулярно отваливается от gdbserver по watchdog timeout, выполните в консоли gdb set watchdog 18000 — это должно помочь.
- Иногда в результате info functions в списке функций отображаются не адреса функций в памяти, а смещения в .so файле, например:0x000c0bac Java_my_app_for_debug_MainActivity_coolNativeMethod
0x000c0c0c Java_my_app_for_debug_MainActivity_anotherCoolNativeMethod
0x000c0c1c Java_my_app_for_debug_MainActivity_theCoolestNativeMethodEverВ этом случае положите libMyNativeLibrary.so в каталог, который для gdb является текущим при старте, и перезапустите gdb снова то й же самой командной gdb libMyNativeLibrary.so.
- Иногда в результате info functions в списке функций отображаются и адреса функций в памяти и смещения в .so файле, например:0x5b5f7bac Java_my_app_for_debug_MainActivity_coolNativeMethod
0x5b5f7c0c Java_my_app_for_debug_MainActivity_anotherCoolNativeMethod
0x5b5f7c1c Java_my_app_for_debug_MainActivity_theCoolestNativeMethodEver
0x000c0bac Java_my_app_for_debug_MainActivity_coolNativeMethod
0x000c0c0c Java_my_app_for_debug_MainActivity_anotherCoolNativeMethod
0x000c0c1c Java_my_app_for_debug_MainActivity_theCoolestNativeMethodEverИгнорируйте смещения в .so файле, ставьте breakpoints на адреса функций в памяти.
- Если команда break на имена функций работает нормально — вы счастливчик, если нет… ну собственно у меня она и не работает, поэтому в данной статье я ставлю breakpoints на адреса функций.
- Может не работать set stop-on-solib-events. У меня не работает.
- Время от времени вы будете видеть надпись Cannot access memory at address 0x1. Игнорируйте.
Я уверен что это далеко не полный список глюков, которые таит в себе отладка native методов без исходных кодов, и что другим исследователям попадутся совершенно другие, уникальные глюки которые не попались мне.
Если кто что ещё найдёт — прошу делится в комментариях. Также в комментария прошу задавать вопросы и/или вносить технические поправки к тексту. Постараюсь ответить как можно быстрее, но если буду тупить — наберитесь пожалуйста терпения.
Постараюсь ответить всем.
Happy debugging!
P.S. Просьба к минусующим статью отписываться в комментариях что именно не понравилось. Постараюсь исправить, если это возможно.
Источник: http://www.pvsm.ru/android/15715
Отладка Android приложения на смартфоне
При создании Android приложений большинство разработчиков пользуются различными эмуляторами. Это удобно, поскольку не нужно хранить кучу различных аппаратов в ящиках стола, нет головной боли с подключением устройств к компьютеру, нет кучи проводов на столе. Щелкаем мышкой и видим работу своей программы на экране компьютера. Просто и элегантно. Тем не менее, эмулятор – не телефон.
Он ограничен в своих возможностях. Если Ваше приложение использует какие-нибудь специфичные аппаратные функции, например связанные с работой камеры, Bluetooth или USB подключением, работой во время приема телефонного звонка, с большой долей вероятности можно сказать, что Вам не обойтись без отладки на реальном устройстве. К счастью, Eclipse содержит все необходимое для решения этой задачи.
Подключение телефона и запуск программы
Прежде чем подключать телефон к компьютеру с помощью USB кабеля передачи данных, необходимо выполнить несколько подготовительных действий. Дело в том, что Eclipse по-умолчанию настроен на работу с эмулятором, и нам нужно подкорректировать конфигурацию режима отладки. Это просто.
Выбираем пункт меню Run > Debug Configuration, а затем DroidDebug. На вкладке Target в разделе Deployment Target Selection Mode нужно установить переключатель в положение Manual и нажать Apply. Таким образом включен ручной режим выбора платформы.
Теперь при запуске приложения будет появляться диалоговое окно, где можно выбрать эмулятор или один из подключенных телефонов.Чтобы телефон мог работать в режиме отладки, его тоже нужно соответствующим образом настроить. Находясь на домашнем экране, нужно щелкнуть по кнопке Menu и найти приложение “Настройки” (Settings).
В этом приложении откройте раздел “Приложения” (Applications), а затем пункт “Разработка” (Development). В открывшемся экране необходимо поставить галочку рядом с пунктом “Отладка по USB” (USD Debgging).
Данная последовательность действий работает на большинстве телефонов, но вполне возможно, что на Вашем устройстве режим отладки по UBS включается где-то в другом месте.Подключите телефон к компьютеру и нажмите кнопку Debug в Eclipse.
В появившемся диалоговом окне Вы увидите два списка: “Chose a running Android device” и “Launch a new Android Virtual Device”. В первом из них перечислены подключенные к компьютеру телефоны, во втором – эмуляторы. Выберите свой телефон в первом списке. Eclipse выполнить установку отлаживаемого приложения на телефон и запустит его. Можете отлаживать свою программу.
Мониторинг состояния телефона DDMS (Dalvik Debug Monitor Service)
Вся информация о состоянии телефона доступна через специальный инструмент, называемый мониторинговым сервисом отладки DDMS (Dalvik Debug Monitor Service). Для его запуска щелкните кнопку с изображением андроида в верхнем правом углу Eclipse.
Окно DDMS состоит из нескольких панелей. На панели Devices отображается список доступных эмуляторов и подключенных телефонов. Здесь же приводится список запущенных в данный момент процессов. Каждый процесс запускается в собственной виртуальной машине. Потоки отображаются на отдельной вкладке Threads.
Вкладка File Explorer предназначена для работы с файловой системой телефона. С ее помощью можно копировать файлы с компьютера на телефон и обратно. С помощью кнопки Screen Capture можно сделать скриншот экрана телефона. Кнопка с зеленым жуком позволяет присоединить отладчик к выбранному процессу.
Для использования этой возможности необходимо иметь открытый исходный код этого процесса.
Также следует отметить утилиту журналирования LogCat и соответствующую панель, которая может оказаться весьма полезной при поиске ошибок. Работа с журналом осуществляется через специальный класс android.util.Log.
Наиболее часто используются следующие методы: Log.e() – для журналирования ошибок, Log.w() – для журналирования предупреждений, Log.i() – для журналирования информационных сообщений, Log.d() – для журналирования отладки, Log.
v() – для журналирования подробных записей,
В качестве параметров этим методам необходимо передать две строки. Первая – тэг, который затем можно использовать для поиска и фильтрации в LogCat. Второй – собственно информация, которая заносится в журнал.
Источник: http://www.mobilab.ru/androiddev/androiddebugging.html
Спасибо за ваше внимание к сайту нашим новым публикациям.