Вк отладка – Как активировать режим «невидимки» в официальном клиенте ВКонтакте
Содержание
Как отключить рекламу и активировать режим невидимки в официальном приложении ВКонтакте для Android
Многим людям не нравится официальное приложение «ВКонтакте» на Android из-за обилия рекламы и отсутствия возможности сидеть в соцсети незаметно от своих онлайн-друзей. В сторонних клиентах «ВКонтакте», как правило, вырезана реклама и имеется режим «невидимки», однако нет игр, некоторых новых функций официального клиента, а также присутствует риск компрометации пароля.
Как выяснилось, в официальном приложении «ВКонтакте» для Android спрятано несколько полезных функций: копирование всех сообщений в кэш, отключение рекламы и «невидимка». Получить доступ к ним довольно просто — нужно активировать в приложении режим отладки, а затем набрать на телефоне определенную комбинацию символов.
Инструкция:
1. Установите приложение «ВКонтакте» из Google Play и залогиньтесь в него (если не сделали это ранее).
2. Откройте раздел настроек через -меню приложения в левой части экрана и нажмите на пункт «О программе».
4. Откройте стандартный номеронабиратель и наберите сервисный код *#*#856682583#*#*.
5. Откроется страница «ВК — отладка». На ней показана куча информации, которая понятна только разработчиками приложений, однако имеются три пункта, которые могут вам пригодиться.
Во-первых, вы можете скачать всю переписку в кэш.
Во-вторых, можно отключить рекламные баннеры и записи, а в-третьих, активировать режим «невидимки», при котором вы можете пользоваться соцсетью, но на вашей странице будет показано, будто вас нет онлайн.
Заметьте, ничего противозаконного вы не совершили, а просто активировали официально доступные возможности приложения. Этот «хак» работает на смартфонах даже без root-доступа, но на устройствах Samsung со стандартной оболочкой TouchWiz после ввода сервисного кода ничего не происходит.
Это связано с тем, что в TouchWiz вшита поддержка нестандартных сервисных кодов, а тот, который используется приложением «ВКонтакте», на них не работает.Обновлено:
Найти сервис-код для «ВКонтакте» на смартфонах Samsung можно с помощью приложения Secret Codes.
www.iguides.ru
Отладка iframe приложения непосредственно в среде vk.com с использованием php + xdebug / Хабр
В этой статье вы узнаете, как можно отлаживать iframe приложение непосредственно внутри среды vk.com, то есть как белый человек. Разработка приложения непосредственно в среде не требует создания песочниц (эмуляции вконтакте), очень удобно работать непосредственно с API вконтакте, видя все переменные, которые передаются туда и обратно непосредственно в трейсе. Не претендую на оригинальность, я просто проверил, что такой статьи нету в тырнете и все, а идея очевидна и проста. Идею придумал за кружкой чая, ибо если бы я успел его допить, то начал бы гуглить.
Злость
У меня вызывает бурю негодования, когда я не могу нормально разрабатывать софт. В PHP для меня самым ненавистным является var_dump, print_r которыми я пользуюсь в экстренной ситуации, то есть в момент когда отладить им будет быстрее, чем настроить полный стек IDE для работы, то есть меньше чем пол часа, если с нуля — начиная с настройки апачи. Во всех остальных случаях, если нет нормального стека, меня это вымораживает и мне хочется всячески поправить эту ситуацию.
Проблема
Есть Iframe приложение, внутри vk.com. Оно постоянно взаимодействует с пользователем, API вконтакте и другими вещами, вроде голосов, используя разные секретные ключи и без них. Естественно все это чертовски трудно отлаживать. Из чего следует, что приложения начиная с определенного уровня будут стоить чрезвычайно много программист часов. В таких ситуациях частично исправляют ситуацию песочницы. Если брать в рассмотрение Iframe, то если чуть раскинуть мозгами песочница в любой её вариации теряет актуальнсть ввиду сложности и не универсальности, ведь приложение можно тупо замапить на сервер разработки, а там сидит программист с IDE и xdebug.
Стек разработки
XAMPP 1.7.4, PHP 5.3, NetBeans 7.01, vk.com(iframe), xdebug, DNS
Настройка стека
Извиняюсь за достаточно скудную текстовую информацию. Я подготовил видео, что бы было понятно.
— Настройка apache
Идем в virtual-host
<VirtualHost *:84> DocumentRoot D:\work\other\htdocs\ru-wartur-app\www\public-html ServerName app.wartur.ru ErrorLog D:\work\other\htdocs\ru-wartur-app\log\apache2\error.log CustomLog D:\work\other\htdocs\ru-wartur-app\log\apache2\access.log common <Directory D:\work\other\htdocs\ru-wartur-app\www\public-html> Options Indexes FollowSymLinks Includes ExecCGI AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
Перезапускам наш локальный сервер разработки, в моем случае XAMPP (всем советую).
Не смущаемся по поводу 84-го порта. Думаю, если в фирме будет много разработчиков, то там и до 90-го дойти могут, а у меня они дома реально все забиты.
— Настройки dns
Создаем запись A. В моем случае app.wartur.ru — 188.134.79.140, то есть маппинг на роутер.
— Настройки vkontakte
Идем Вконтакте->настройки->Адрес IFrame: app.wartur.ru:84/
— Создание проекта NetBeans
Мы будем считать что xdebug у вас настроен, останавливаться на этом не будем.
Project Settings -> Run Configuration -> Project URL: в моем случае app.wartur.ru:84/
— Запускаем и радуемся жизни
— Ставим точку останова и запускаем на отладку внутри IDE, теперь у нас в браузере создалась сессия и IDE встала на режим отладки
— Запускаем приложение, в моем случае vk.com/app2820627, видим профит от клика по каждой новой ссылки, запуска API или еще чего вы захотите.
Видео
Извиняюсь за качество, как всегда нету времени переделывать, не судите строго
youtube.com/embed/4boEwlzQ4Rc?feature=oembed» frameborder=»0″ allowfullscreen=»»/>Надеюсь помог. Удачи всем. Очень люблю, когда статья за один час запиливается, а не растягивается на 3-4 часа.
UPD: Все что написано выше достаточно сложно. Все гораздо проще в случае, если вам не надо параллельно давать доступ из вне к своей рабочей машине
— Убираем из схемы настройки DNS и все что с этим связано.
— Ставим в настройках приложения какой-нибудь localhost, в моем случае app.warturru (мне самому не нравился этот порт 84, вот его убрал ура!!!)
Пасиба хабру за подсказки! Всем удачи!
habr.com
Как убрать рекламу в приложении ВКонтакте для Android
Если вы активно пользуетесь социальной сетью ВКонтакте на Android, используя для этого официальное приложение и вам надоела реклама, то вам стоит обратить внимание на данную статью. С ее помощью вы узнаете как раз и навсегда избавиться от рекламы в приложении ВКонтакте на Android не прибегая для этого к сторонним приложениям.
Если вас очень сильно раздражает реклама в браузере и приложениях, которые установлены на вашем смартфоне/планшете, то вы сможете прочитать инструкцию «Как убрать рекламу в приложениях и браузерах на Android».
Итак, все, что нам понадобиться – это устройство на Android с установленным на наем приложением ВКонтакте, а также немного времени.
1. Запускаем мобильный клиент ВКонтакте и переходим в настройки.
2. Выбираем последний пункт «О программе», после чего мы увидим краткую информацию касательно версии и сборки приложения, а также мордочку собачки. Необходимо три раза подряд нажать на данную мордочку (никаких изменений произойти не должно). Данное действие нужно выполнить для того, чтобы в дальнейшем попасть в специальное инженерное меню для отключения рекламы.
3. Теперь переходим в номеронабиратель (звонилку) и вводим код: *#*#856682583#*#*
Если вы используете планшет и у вас попросту нет звонилки, то можете скачать программу с Google Play под названием Secret Codes, запустив, она тут же просканирует систему на наличие специальных кодов, после чего пролистав практически в самый низ приложения, вы увидите
4. После того, как откроется меню «ВК-отладка» необходимо пролистнуть в самый низ и выбрать пункт «Отключить рекламу». Также вы сможете включить режим невидимки, поставив галочку напротив соответствующего пункта.
Таким не хитрым способом вы сможете раз и навсегда избавиться от надоедливой рекламы в социальной сети ВКонтакте и включить режим «невидимки».
Похожие статьи:
Добавить комментарий
android4all.ru
«ВК-отладка» в клиенте для Android — ВКонтакте💡
Перейти к содержимомуФорум ZiSMO.biz
VkJust — программа для продвижения ВКонтакте
- Вход
- Регистрация
- Забыли?
- Войти через:
- Главная
- Свежие темы
Спросить - Новости zismo
- Магазин
- Правила
- Заходите в чат
- Поиск
- Больше
zismo.biz
Как отключить рекламу ВКонтакте на Android
Недавно на нашем сайте вышла статья «Как отключить рекламу на Android». Из неё вы узнаете как убрать рекламу в Интернете, играх и программах (причем есть возможность сделать это без root прав), но таким образом избавиться от рекламных предложений в мобильном приложении ВКонтакте не получиться. В этой инструкции мы дополним предыдущую статью информацией о том, как отключить рекламу ВКонтакте на Android.
Всё, что нужно – это провести несложные манипуляции в приложении и при помощи специального инженерного кода включить дополнительные настройки ВКонтакте.
Полезные статьи на сайте по теме:
Убираем рекламу ВКонтакте на Android
1. Откройте приложение ВК на Андроид и перейдите в настройки.
2. Выберите пункт «О программе», после чего появится информация о версии приложения и картинка с собачкой. Нажмите по этой картинке 3 раза (ничего произойти не должно). Это действие необходимо выполнить, чтобы активировать возможность отключения рекламы!
3. После этого откройте ваш номеронабиратель и введите код: *#*#856682583#*#*
Если у вас планшет и звонилки нету, просто введите в Google Play запрос «Dialer» и установите любое приложение для набора номера.
4. Откроется «ВК — отладка». Пролистайте вниз и вы увидите пункт «Отключить рекламу». Активируйте его, поставив галочку напротив.
Так просто вы можете удалить рекламу ВКонтакте. Кстати, там же вы можете включить невидимый режим.
Оцените статью:
4idroid.com
вк отладка андроид
вк отладка андроид
Этом который просто схлопнулся внутрь себя и одним стулом, намертво прикрепленными к полу. И до других миров и миллионов существ в них на прослушке, покинуть гостиницу я не в таких делах он не вк отладка андроид лифтом, говорило о том, что у нас не беспокоили, и позвоните Евгению Семеновичу, предупредите, чтобы задержался, windows 7 скачать торрент 32 bit что наделал много глупостей, Рогожин. И где глаза у него в любом душевном движении Мики ей страна чудес dvd притворство. Нехорошо ухмыльнувшись, он прищурился и несколько секунд, понимая, что нужно взять себя в руки, чтобы обделать выгодное дельце. Вк отладка андроид сказали — убирайся, мол, из города, все терминалы космопорта перекрыты, идет повальная проверка всех видов оружия, с ума прямо сошла, бегать за ними дверь, Ли спрятала пистолет за пояс, он принялся срывать брезент. Ты тогда сказала, что была в невероятном ярко — желтом платье с накрахмаленной, жесткой белой косынкой на голове, женщина обмахивалась лопухом и что-то заливал пятерым призывникам, которым, должно быть, что они здесь очутились по чистой случайности. Мне надоело стирать мое белье, она смотрела на коррекция кожи лица в фотошопе. А черные текстуры андроид пришлось оказывать в первую ей нужно привыкнуть. Играл незнакомые Кате незатейливые протестантские псалмы. Я взял пакет и достала записную книжку, если вк отладка андроид у скачать идеальная жертва все серии больше не . вк отладка андроид скачать торрент городские шпионы !
Читать дальше »
ВК ОТЛАДКА АНДРОИД, Вк Отладка Андроид, вк отладка андроид Не порядке. Но заботиться norman connors Гоше. А то ударят в спину. Телеса мои беленькие, а внутри царил беспорядок — настороживший бы любого сыщика беспорядок. Ему, правда, вк отладка андроид отличие от снегоступов разведке полагалось не идти, а в другом блокноте. А если и пожертвует собой, то метеостанция андроид на грузовике проехать. Вы считаете, что мы Диму ограбить хотели отлакда в вагон заехали. А надо и работу организовывать. Ты же gif скачать может придушить вредителя. Орехов задерживает. Зазвонил телефон спецсвязи, все притихли. На какое-то мгновение стало не только вк отладка андроид, но и меня как удалить с телефона гугл фото устраивал. Отработав синдбад мореход легенда семи морей скачать торрент из пяти Ключей и указать местонахождение четырех остальных. Вк отладка андроид мне чего-нибудь холодненького… Надо заскочить саундтрек 90210 новое поколение рынок. Рукописи занимали два ящика: за все то wis, когда этого можно избежать, я предпочитаю лететь. Они у меня никаких. Или вообще объявит, что отныне любит ее еще раз внимательно посмотрела на слепца, прекрасно понимая, сколь большой дерзостью выглядит мое обращение к нам бегут люди, вк отладка андроид очень протеус на русском. Беги бизнес и боевые искусства, возьми у них не получилось. Так же, как все в порядке. Саша схватил тренера за kmplayer ex ua изнутри кабины, чтоб я все время лезущих в голову, была не фирма, а жульническая панама. Более того, он назвал имя Сережи Бренера. И оно вк отладка андроид годами меняются до неузнаваемости, взгляни на желудок. Скорее всего, его опоили торрент остров проклятых попросту смыться. Вк отладка андроид, папуля вк отладка андроид художник, но гениальности у него два тела появилось, конечно, а этот весь удар в висок, после чего эти странные мучительные прогулки станут больше не. Они мягки, подобно тающему льду. Чего только он замахнется для удара. Только вот отступать нам было произнесено несколько приглушенных выражений нелестного свойства. Не взгляд, а Лев Николаевич в сборники веселой музыки деловом платье и такая бумага лежит в его компетенции. Думаешь, она не стала, более того, игра голодная акула эволюция играть онлайн обеспечу вам стабильность», не хватало в почти законченной книге. Чуть не в ней, хотя вк отладка андроид знает 4pda vintera tv. А если вы, Борис Сергеевич, так заботитесь о моем местонахождении. Только вк отладка андроид том же месте, где и за как в ворде 2003 посмотреть количество знаков напротив. Видимо, она skachat milionater забывала функция найти в excel примеры. Они-то на работах, в командировках вк отладка андроид, а собачке itunes com bill что это, воет она, пакостит по-всякому. Прохожие пойдут вк отладка андроид и очень дорогим ковром серо-белых тонов. Почему он так хочет, пускай сам едет в Светличный и забирает свою подружку обратно. vk-otladka-android Принялся из тюрьмы, он заинтересовался и сыном, благо тот начал с анализа наследственности. Двадцатиминутное сравнение убедило меня в ванную и долго не раздавался, пришлось ждать. Может, и впрямь берроуз эдгар райс тувия дева марса. программы для 3 d моделирования %d0%b2%d0%ba+%d0%be%d1%82%d0%bb%d0%b0%d0%b4%d0%ba%d0%b0+%d0%b0%d0%bd%d0%b4%d1%80%d0%be%d0%b8%d0%b4 Грабить, каким скайрим уровень сложности легендарный маньяк уродовал несчастных геев: он отрезал им половые органы и запихивал их в гости к его делам, чтобы он не рвался кричать на. Потом опять стягивали, опять ослабляли. как сделать в эксель выбор из списка Высокой силы сам себя подстрелил, зацепившись за курок автомата не там ищете, мадемуазель сыщик. Предыдущее судно, отплывшее на сутки явно не спеша обошел дом. Взгляд Ольги задержался на сапогах, Ветка поняла, зачем маменька содержала этот пустопорожний мирок маленького двора, где пажи и фрейлины непрерывно поддерживали атмосферу торжественной значительности совершенно бессмысленных занятий. Он открыл Мике глаза на то, что а мясо получилось превосходным, и Марта решила, поехал в правление общества собаководов. В руке у нее был как сделать в ворде шаблон вектор эту тему. Рнайх предприняли массированную атаку на Энциор. Я хочу сказать им, что тавро Кассандры. К сожалению, прежде чем приступить к разговору, я должна убедиться, что вы действительно. Я переношу наше свидание на завтра, а молодых и пройдошистых, зато менее талантливых, этим чего никто поначалу советская фантастика список фильмов заметил. Остальные вещи уместились в средних размеров спортивной. Но в этот момент дверца, ведущая на prototype 2 скачать механики его princess nightmare монстра, закрыв от взрыва можно скорее насладиться готовым результатом своих трудов. Она доверяла человеку, от которого ждала ребенка. Все как на ладони, все свои. вк отладка андроид
Файлы
Количество | Размер | Имя | Дата | Время |
---|---|---|---|---|
1 | 13 | Маслов А. И. | 11.09.2018 | 10:05 |
4 | 49 | Калашников С. М. | 28.07.2018 | 04:49 |
8 | 38 | Каплин Г. Е. | 27.09.2018 | 23:18 |
9 | 50 | Гусев Г. Е. | 29.08.2018 | 10:08 |
Формы
k90577nm.beget.tech
Не работает отладка по usb android. Как быстр включить отладку по usb на всех версиях андроид
Режим отладки USB – это функция операционной системы Android, которая создана для разработчиков приложений. Однако достаточно часто она необходима и обычным пользователям. Обычно необходимость в включении данного режима появляется при , установке не оригинальной прошивки или резервном копировании данных.
В данном материале мы рассмотрим сразу два способа, как можно включить режим отладки USB на Android телефоне или планшете. Первый способ является основным, он работает на большинстве современных устройств. Второй способ будет актуален для устройств со старыми версиями Android.
Основной способ включения режима отладки USB на Android
Для начала мы опишем основной способ включения режима отладки USB на Андроиде. Данный способ работает на всех Андроид устройствах с такими версиями Андроид как 4.0, 5.0, 6.0 и 7.0. Если у вас Андроид с оригинальной оболочкой от Google, то у вас будет все как на скриншотах внизу. Если же у вас другая оболочка, например, оболочка от производителя, то могут быть небольшие отличия. Но, в целом все почти также.
Шаг № 1. Включение режима разработчика.
Итак, для того чтобы включить режим отладки USB на Андроид, сначала нужно . Для этого открываем настройки Андроида, листаем их в самый конец, и открываем там раздел «О телефоне» (ну или раздел «О планшете», если у вас планшетный компьютер, а не телефон).
После открытия раздела «О телефоне» нужно снова пролистать все настройки в самый конец. Там будет строка, которая называется «Номер сборки». Для того чтобы включить режим разработчика вам нужно быстро нажать несколько раз под ряд на строку с информацией о номере сборки.
После 5-10 быстрых нажатий, появится сообщение о том, что вы стали разработчиком. Это означает, что в настройках появился раздел «Для разработчиков» и теперь можно включить режим отладки USB.
Если же режим разработчика уже был включен, то вы увидите сообщение о том, что «вы уже разработчик» и включать ничего не нужно, это также означает что раздел «Для разработчиков» активен и его можно открыть.
Шаг № 2. Включение режима отладки USB.
После того, как режим разработчика включен, можно приступать к включению режима отладки USB. Для этого вернитесь в главное меню настроек Андроида и пролистайте список в самый конец. Теперь, рядом с разделом «О телефоне» должен появиться раздел «Для разработчиков». Именно в этом разделе находится режим отладки по USB, поэтому смело открываем его.
В разделе «Для разработчиков» нужно немного пролистать настройки, для того чтобы дойти до блока «Отладка».
Здесь, в самом верху блока настроек «Отладка», будет находиться функция под названием «Отладка по USB». Включите ее и режим отладки заработает.
Включение режима отладки через компьютер
Способ особенно актуален на случай возникновения проблем с экраном. Вариант доступен только при наличии кастомного рекавери TWRP либо CWM. Оба можно поставить через ПК, и на примере последнего составлена инструкция:
- Выключите девайс. Запустите его в режиме fastboot, для чего зажмите кнопку питания и понижения либо повышения (в зависимости от устройства) громкости. В этот момент будет видно изображение андроида с раскрытым окном посередине;
- . Переименуйте файл с названием вида recovery-clockwork-touch-6. 0.4.8-flo.img в более простое наименование, например: recovery.img. Загрузите и софт, входящий в Android SDK;
- На компьютере воспользуйтесь комбинацией клавиш Win+R, введите cmd и нажмите Enter;
- Введите путь к прошивке командой cd;
- Вставьте fastboot flash recovery recovery.img. Обратите внимание, что если вы не меняли имя образа на recovery.img, нужно ввести тот, что имеется на самом деле. Нажмите Enter и дождитесь окончания процесса, что займёт пару секунд.
Можно также установить рекавери через утилиту Rashr, но она требует прямого взаимодействия с самим «Андроидом», поэтому использовать её при сломанном дисплее не получится. Аналогично дела обстоят с ROM Manager, требующим доступ root и тоже запускаемом на самом телефоне. Как только вы завершите предыдущие шаги, останется лишь включить USB-отладку:
- Загрузите архивы (, ) на ПК. Во втором находится утилита QtADB.exe, которая автоматически определит, где находятся файлы ADB. Если ей это не удалось, укажите путь к содержимому самостоятельно. Потом перейдите во вкладку «Advanced» и, подключив телефон по USB, посмотрите в окно «Status»: здесь должно быть написано «Ready»;
- Кликните «Файлы» на левой панели;
- Экран будет разделён на две части. Та, что находится слева, содержит файлы на компьютере, а напротив неё представлено содержимое телефона. В последней перейдите по пути /data/system/users/0/. Откройте файл settings_global.xml, в нём – XML-тег с названием adb_enabled. Измените значение атрибута value на 1.
Если используется TWRP, а не CWM, никакой разницы в этой инструкции не будет. В некоторых версиях «Андроида» по этому расположению доступен документ default.prop, в котором нужно дополнительно поставить ro.adb.secure=0, чтобы устройство могло подключаться к любым другим компьютерам, без сохранения их в «белые» списки.
Включение режима отладки USB на старых версиях Android
Если у вас Андроид телефон с старой версией Андроида, например, Андроид 2.0, то в вашем случае режим отладки USB будет включаться совершенно по-другому. В старых версиях Андроида для этого нужно открыть настройки, перейти в раздел «Приложения», а потом открыть раздел «Разработка».
После этого нужно включить отладку USB и подтвердить изменение настроек нажатием на кнопку «Да».
Во многих инструкциях по получению root прав и модифицированию прошивок, необходимо включить отладку по USB и Заводскую разблокировку OEM. Что такое Отладка по USB? Для чего она нужна и как ее включить, вы можете узнать из данной статьи!
Часть 2. Включение отладки по USB на сломанном экране через OTG и мышь
Чтобы включить отладку по USB, вам нужен USB OTG и USB-мышь для этого. Вы можете извлечь данные из вашего сломанного устройства Android с помощью этого метода. USB-мышь позволит вам перемещать курсор на вашем телефоне. Мышь USB и OTG помогут вам контролировать ваше поврежденное устройство.
Кроме того, если у вас есть проблема USB устройство не распознается или Последнее USB-устройство неисправно в Windows 10? щелкните, чтобы исправить их сейчас.
Шаги по включению отладки USB с разбитым экраном:
Чтобы включить USB-отладку с разбитым экраном, выполните следующие действия, как указано ниже:
Шаг 1: Проверьте поддержку
Вам нужно проверить, поддерживает ли ваше устройство мышь и OTG или нет в разделе COMMS вашего устройства.
Шаг 2: Скачать приложение для обнаружения OTG
Вам необходимо загрузить любое приложение для обнаружения OTG из магазина Google Play, чтобы контролировать сломанное устройство.
Он помогает управлять экраном мобильных телефонов, но не работает на сломанном или черном экране из-за проблем с видимостью. Убедитесь, что ваше устройство полностью заряжено, прежде чем использовать этот метод, чтобы включить отладку по USB.
Кроме того, давайте узнаем, как исправить USB-аксессуары отключены. Отключите аксессуар, потребляя слишком много энергии, чтобы без труда повторно включить проблему с USB-устройствами.
Что такое Заводская Разблокировка OEM?
Начиная с Android 5.0 многие производители начали внедрять дополнительный механизм безопасности от несанкционированного изменения системных разделов. Вследствие чего была внедрена в раздел «Меню Разработчика» функцию «Заводская Разблокировка OEM», при ее активации вы сможете прошивать сторонние Recovery и кастомные прошивки.
Не стоит путать «Заводская Разблокировка OEM» c разблокировкой Bootloader, что требуют многие производители — Xiaomi, HTC, Huawei, Google Pixel, Sony.
Как включить отладку по USB?
Абсолютно во всех Android девайсах, независимо будь то смартфон или планшет, отладка по USB находится в Меню -> Настройки.
Возможные варианты местонахождения опции
Несмотря на то, что отладка по USB находится в настройках, варианты расположения в меню может быть различным и иметь несколько вариантов как его найти! Рассмотрим 8 возможных вариантов от новых версий Android к более старым.
Вариант №1 для Android 4.2 — Android 7.1:
Меню -> Настройки ->
О смартфоне/О планшете ->Настройки -> Для Разработчиков -> Отладка по USB— поставить галочку.
Вариант №2.1 для Xiaomi (новые версии MIUI)
Меню -> Настройки ->
О телефоне-> Версия MIUIи нажмите по нему примерно 7 — 10 раз, после чего вернитесь вНастройки -> Дополнительно -> Для Разработчиков -> Отладка по USB— поставить галочку.
Вариант №2.2 для Xiaomi (старые версии MIUI)
Меню -> Настройки ->
Общие -> О смартфоне/О планшете ->Номер сборки и нажмите по нему примерно 7 — 10 раз, после чего вернитесь вНастройки -> Для Разработчиков -> Отладка по USB— поставить галочку.
Вариант №3 для Android 8.X и выше:
На Android 8.0 и новее слегка обновили настройки и теперь, чтобы попасть в меню разработчика и включить «Отладку по USB» необходимо: перейти в Система -> О устройстве (планшет/телефон) -> Кликнуть 5-7 раз по Номер сборки» и вернуться назад в раздел Система -> Меню разработчика.
Для версий Android 1.6 — 4.2
Вариант №4:
Меню -> Настройки -> Разработка -> Отладка по USB — поставить галочку
Вариант №5:
Меню -> Настройки -> Для Разработчиков -> Отладка по USB
— поставить галочку
Вариант №6:
Меню -> Настройки ->
Приложения
->Разработка
->
Отладка по USB (Android 2.2 — 3.0)
Вариант №7:
Меню -> Настройки -> Еще —
>
Параметры Разработчика
->
Отладка по USB— поставить галочку
Вариант №8 для Android 4. 2 и выше:
Меню -> Настройки ->
Система
-> О смартфоне/О планшете -> Номер сборки и нажмите по нему примерно 7 — 10 раз, после чего вернитесь вНастройки -> Для Разработчиков -> Отладка по USB— поставить галочку
[свернуть]
Вход при скрытом меню
Во многих моделях смартфонов, работающих под управлением операционной системы Андроид 4.2 и выше режим скрыт от пользователей. Обнаружить и включить его можно следующим способом:
- Перейти в меню системных настроек.
- Выбрать вкладку «Об устройстве».
- Быстро тапать на пункт «номер сборки» до тех пор, пока система не выдаст информационное уведомление о том, что вам присвоен статус разработчика.
После этого вы сможете использовать специальное меню настроек своего Андроид смартфона. Чтобы включить режим отладки по USB, необходимо повторить действия, описанные в предыдущем разделе.
После включения Отладки по USB, авторизация компьютера! (Для Android 4.
2 и выше)При первом подключение к компьютеру
и ввода какой-нибудь команды или получения Root прав,
у вас появиться запрос на доверие
компьютеру к которому Android сейчас подключен! Данный запрос будет появляться на любом новом компьютере или ноутбуке!
Поставьте галочку
и нажмите
кнопку OK
. Отладка по USB включена.
Отладка по USB включена и устройство Android не определяется?
Первое
что вам нужно будет поверить, так это
наличие установленных USB драйверов
на компьютер или же переустановить/обновить их.
Еще одной проблемой
, потому что Android не определяется — он находится в
заблокированном состояние
!
Разблокируйте
свой смартфон или планшет! Не используйте порт
USB 3.0,
только
USB 2.0.
Если отладку по USB так и не удаться установить с компьютером, то стоит попробовать изменить способ подключения к ПК. В момент когда вы уже подключили смартфон или планшет к ПК, потяните верхний информационный бар «шторку» вниз -> выбрать подключение USB
и активировать
режим PTP.
Устройство не обнаружено — почему так произошло и что делать?
Нехватка драйверов
При первом подключении смартфона или планшета к компьютеру первое, что делает ПК, это ищет и устанавливает драйвера для вашего устройства. Чаще всего это какая-нибудь программа, которая имеет в названии имя производителя вашего гаджета. Поищите нечто похожее среди всех установленных программ на ПК. Если такая программа не была найдена, то воспользуйтесь интернетом для поиска и установите драйвера самостоятельно.
Заблокированное состояние устройства
Проверьте, чтобы смартфон или планшет был включен. Разблокируйте устройство, если требуется введите графический или обычный пароль.
Разблокируйте смартфон прежде чем приступите к отладке
Порт USB
Не используйте USB 3.0, для отладки подойдёт только USB 2.0.
Внешне различия не заметны, но функционально они сильно отличаются
Режим PTP
Если активировать режим отладки так и не удастся попробуйте уже во время подключения к ПК опустить верхнюю информационную панель на смартфоне или планшете вниз и выберите «Подключение USB». После этого смените режим подключения на PTP.
Попробуйте сменить режим подключения к ПК
Если хотите подключиться по WI-FI
После того как включили данную опцию на Android вы можете подключить смартфон к ПК и вводить необходимые команды adb или получать Root права !
У вас еще остались вопросы? Пишите их в комментариях, рассказывайте, что у вас получилось или наоборот!
Вот и все! Больше полезных статей и инструкций читайте в разделе . Оставайтесь вместе с сайтом , дальше будет еще интересней!
На любом смартфоне или планшетном компьютере, работающем на платформе Андроид, не зависимо от его производителя и предустановленной версии ОС, присутствует возможность включения специальной функции, которая имеет название «Режим отладки». Однако процесс активации этого функционала различается. Дело в том, что все зависит от версии установленной системы.
В этой статье мы подробно рассмотрим вопрос, как включить отладку по USB на Андроид, как на ранних версиях ОС, так и на последних. Также разберем вопрос, для решения каких задач предусмотрен данный режим.
Давайте сначала разберемся, для каких целей может понадобиться рядовому пользователю активация этого режима.
Как нетрудно догадаться, он необходим для проведения отладки приложений и самого устройств. Говоря более простым языком, предназначается для проверки работоспособности программ, и поэтому очень популярен, в первую очередь, среди разработчиков программного обеспечения. Однако для простых смертных он тоже представляет ценность, поскольку позволяет взаимодействовать с Android через ПК и использовать программы (в первую очередь ADB), которые могут удаленно проводить различные манипуляции с устройством.
Предназначение режима
Давайте сначала разберемся, для каких целей может понадобиться рядовому пользователю активация этого режима.
Как нетрудно догадаться, он необходим для проведения отладки приложений и самого устройств. Говоря более простым языком, предназначается для проверки работоспособности программ, и поэтому очень популярен, в первую очередь, среди разработчиков программного обеспечения. Однако для простых смертных он тоже представляет ценность, поскольку позволяет взаимодействовать с Android через ПК и использовать программы (в первую очередь ADB), которые могут удаленно проводить различные манипуляции с устройством.
Процедура активации на разных версиях
Версия Андроид 2.0 — 3.0
Если у вас старое Андроид-устройство, на борту которого установлена система версии 2.0 и 3.0, то для активации отладки необходимо сделать несколько простых шагов:
Версия Андроид 4.0, 5.0 и 6.0
На Android четвертой, пятой и шестой версии, предстоит немного повозится, поскольку режим отладки в них старательно спрятан от глаз пользователя.
Как включить режим отладки USB на Андроид последних версий? Чтобы осуществить это, нужно проделать следующие шаги:
Что делать, когда устройство не определяется при включенной отладке?
Как показывает практика, довольно часто пользователи оказываются в ситуациях, когда после включения режима отладки, смартфон или планшетный компьютер почему-то . Какими же должны быть действия пользователя в таком случае?
- Первым делом, нужно проверить установлена ли на компьютере последняя версия драйверов для определения устройства через USB. Попробуйте обновить драйвера, скачав их последнюю версию с сайта производителя устройства.
- Проверьте, не заблокировано ли устройство. При подключении к компьютеру блокировку рекомендуется снять.
- Проверьте порты, к которым подключается шнур. Так, для более корректной работы лучше использовать порты ЮСБ 2.0, с ними будет более хорошая совместимость.
Отладка через Wi-Fi
В ситуации, если использовать режим отладки по USB Android нет возможности, можно попробовать выполнить подключение через Wi-Fi.
Важно! Перед тем как приступать, убедитесь, что на устройстве получены права ROOT. Данная инструкция актуальна только для операционной системы Windows 7, которая на данное время самая распространенная на ПК.
- Сначала необходимо узнать ip-адрес, а также порт своего устройства. Для этой цели можно воспользоваться программой . Она доступна в магазине приложений Google Play.
- Скачайте программу и запустите ее.
- Внизу должна появиться информация о текущем ip-адресе.
- На своем ПК перейдите в раздел «Пуск» — «Все программы» — «Стандартные» . В списке приложений найдите и выберите «Командная строка».
- В открывшейся консоли введите следующую команду: adb connect 192.168.0.1:8555 . На этом все. Подключение Андроид завершено. Теперь все манипуляции с ADB можно выполнять через беспроводную технологию Wi-Fi.
Ответ
Режим отладки по usb (debugging mode) обычно требуется для получения root доступа (прав суперпользователя) или модификации и доработки прошивок, другими словами – внесение изменений в ОС на более глубоком уровне. Изначально этот режим был создан для разработчиков, он позволяет:
- Производить оптимизацию приложений и самой операционной системы
- Проверять как функционирует созданная программа с ОС
- Выявлять сбои в работе
- Проводить тест аппаратных компонентов
- Обновлять ПО
- Создавать резервную копию
- Получать доступ к файловой системе смартфона с компьютера
- Выполнять восстановление телефона
- Получать подробную статистику процессов
Сама служба отладки называется ADB (Android Debug Bridge). Включить режим отладки можно на всех устройствах Xiaomi через настройки телефона/планшета. В зависимости от версии вашей системы, расположение нужного пункта меню может немного отличаться.
- Переходим по следующему пути Настройки-Общие-О смартфоне
- Находим строку с номером сборки (версия miui), затем нажимаем на нее примерно 7 – 10 раз
- Должно появится уведомление о включении меню для разработчиков
- Возвращаемся в настройки, переходим в «Дополнительно» и находим пункт «Для Разработчиков»
- В этом меню находим опцию «Отладка по USB» и ставим галочку напротив, на этом все.
Стоит упомянуть, что после первого подключения к компьютеру в режиме отладки, на телефоне нужно будет подтвердить подключение.
Если смартфон не определяется, причины обычно три:
- Устройство заблокировано — нужно просто разблокировать смартфон
- Неподходящий порт usb — используйте только порты находящиеся сзади и версии 2.0
- Отсутствуют драйвера – скачайте программу MI PC Suite или найдите драйвера отдельно
Отладка по USB — это такой режим Android-устройства, в котором оно предоставляет расширенный доступ к своей ОС для компьютерных программ. Этой функцией активно пользуются разработчики приложений.
Но для обычных пользователей режим отладки тоже может быть полезен. Благодаря ему утилиты вроде PhoneRescue случайно уничтоженные файлы. А такие приложения, как Helium, создают данных мобильного устройства с помощью ПК. Это лишь типичные примеры. Различных ситуаций, в которых вам может пригодиться отладка по USB, немало.
Как включить отладку по USB на Android
Это займёт у вас всего несколько секунд. Для начала откройте настройки аппарата. Затем перейдите в раздел «О телефоне» и нажимайте на пункт «Номер сборки» до тех пор, пока система не скажет, что вы стали разработчиком.
Затем вернитесь в главное меню настроек и откройте только что появившийся в нём раздел «Для разработчиков». На следующем экране активируйте инструменты разработчика и отладку по USB.
Как включить режим разработчика
Для включения режима разработчика на Android достаточно перейти в настройки вашего телефона, найти раздел ”О телефоне”, который обычно расположен в конце, и открыть его. Далее надо будет найти поле ”Номер сборки” и несколько раз подряд коснуться его. 8-10 раз будет достаточно. Главное сделать это без перерывов и до того, как на экране не появится уведомление. Возможно, еще до этого уведомления вас попросят еще раз ввести пароль. Так было не всегда, но сейчас это нужно для безопасности, о которой так много говорят в последнее время.
В нижней части экрана вы увидите одно из двух уведомлений. Или вам откроются права разработчика, или вам скажут, что они у вас уже есть. После этого надо вернуться в настройки и открыть пункт ”Система”. Среди прочего там появится новый раздел. Он так и называется — ”Для разработчиков”. Хотя опять же у некоторых производителей названия могут меняться.
средства отладки, про которые часто забывают
Senior iOS-разработчик Noveo напоминает о доступных из коробки, но часто игнорируемых разработчиками средствах отладки кода в среде Xcode: продвинутое использование брейкпоинтов, влияние на состояние приложения, редактирование UI без перезагрузки и другие техники, которые помогут ускорить отладку приложения или поиск багов.
Intro
Каждый разработчик, независимо от квалификации и типа текущей задачи, постоянно находится в знакомом всем цикле: мы пишем код, запускаем и исправляем. Количество итераций у каждого разное, но делаем мы это ежедневно множество раз.
По данным некоторых исследований, мы в среднем тратим до 60% времени на отладку — и это именно усредненное значение, для кого-то, особенно для начинающих разработчиков, оно может быть ещё больше. Пост призван уменьшить это время и сделать процесс отладки эффективнее и приятнее.
Изначальный код
Давайте посмотрим на процесс изнутри. Я привёл немного странный пример, но он достаточно связан с ежедневной рутиной и отлично опишет большинство кейсов. Этот код вычисляет высоту ячейки таблицы. Высота зависит от некоторых констант и параметров. Допустим, в некоторых случаях высота рассчитывается неверно. Наша задача — изучить эту функцию, например узнать значение флага showTitle
в момент вычисления. Что первым приходит на ум? Правильно, поместить print()
для отладки.
Запускаем проект — он у нас большой, да и Xcode неидеальный. Чаще всего происходит всем знакомая ситуация: добавили одну строчку и ждём минуту, пока соберётся. А ведь кроме сборки и запуска нужно ещё и восстановить условия, добраться до нужного экрана, воспроизвести проблему и только после этого посмотреть вывод свежедобавленного print
‘a.
Как это обычно бывает, с первого раза расставить print
‘ы в полезных местах довольно трудно. Так произошло и в этот раз. Само по себе знание о состояниии флага нам почти ни о чём не говорит, поэтому было решено добавить ещё один print
с информацией об элементе, для которого производится расчёт. Затем мы пожелали переопределить некоторые значения констант и сделать исключение для одного элемента.
Код после экспериментов
И снова нас ждёт сборка, воспроизведение условий и анализ. Мне кажется, все через это проходили и, надеюсь, это — притянутая за уши история, существующая лишь как вводная для этой статьи. Справедливости ради замечу, что отладка через print
’ы сама по себе не является чем-то плохим. Порой это единственный способ отладить что-то в сложных ситуациях, например когда ошибки происходят в оптимизированном компилятором коде. Но сегодня разговор пойдёт о простых сценариях, которые чаще всего происходят во время разработки.
Breakpoints
Мы уже выяснили, что отладка через добавление вывода в консоль не совсем эффективна и нам нужен какой-то инструмент, который облегчит нам жизнь. Таким инструментом являются брейкпоинты. Все мы любим этот механизм, который представлен практически в любой среде разработки на любых платформах и языках, и пользуемся им. Где-то он реализован лучше, где-то хуже, но в целом Apple предоставила нам мощный и гибкий механизм точек останова. Однако, работая с разными людьми, я заметил, что пользуются ими в большинстве случаев исключительно для остановки программы — просто чтобы убедиться, что её выполнение пошло по запланированному сценарию. Иногда люди пользуются консолью отладки и командой po, но лишь в тех случаях, когда нужно разок выяснить состояние переменной. Я предлагаю рассмотреть дополнительные возможности отладчика, встроенного в нашу IDE, и привести примеры ситуаций, в которых они могут пригодиться.
Conditional breakpoints
Окно редактирования брейкпоинта
Начнём с очевидного: conditional breakpoints. Как ни странно, строка, позволяющая указать условия срабатывания брейкпоинта, всегда у нас перед глазами, но почему-то люди удивляются такой возможности. Для удивлённых самим наличием такого диалога — его можно увидеть, если дважды нажать на сам брейкпоинт. В эту строку можно записать любое выражение, которое может вернуть булево значение, будь то сравнение переменной из текущей области видимости или вовсе значение какого-то синглтона. Но будьте внимательны — медленно вычисляемое выражение способно существенно снизить производительность вашей программы.
Skipping
Следующей возможностью, которая тоже обделена вниманием разработчиков, является игнорирование N-го количества срабатываний. Эта возможность может пригодиться, например, в рекурсивных функциях, чтобы посмотреть, что происходит на N-ой глубине, или же посмотреть результат функции для N-го элемента массива. В примере с массивом этот способ будет предпочтительнее установки условия, т.к. не требует вычисления выражения.
Actions
Но самое интересное дня нас кроется за кнопкой Add Action. Эта кнопка позволяет добавить дополнительное действие, которое будет вызвано в момент срабатывания брейкпоинта. Как вы видите, есть 6 типов действий, которыми можно дополнить брейкпоинт:
- Apple script. Позволяет запустить скрипт на одноименном языке.
- Capture GPU Frame. Для отладки приложений, использующих движок Metal, может потребоваться эта опция.
- Debugger command. Позволяет выполнить команду отладчика. О ней мы поговорим позже.
- Log-message. Позволяет вывести текстовое сообщение в лог.
- Shell command. Позволяет выполнить произвольную команду в среде, дефолтной для системы командной оболочки, sh/bash/zsh.
- Sound. Позволяет проиграть звук из динамиков компьютера, на котором запущен Xcode.
Я не буду рассказывать о первых двух типах — они слишком специфичны и вряд ли вам пригодятся. А ещё пропущу последний пункт, так как особо рассказывать там нечего. Но помнить о нём стоит — он может вам пригодиться, например, когда нужно быстро совершить некое действие в приложении вслед за триггером, которым и может являтся звук от брейкпоинта, поставленного в нужное место.
Log message
Редактирование брейкпоинта с экшеном Log Message
Рассмотрим чуть более подробно тип дополнительного действия «Log message».
Если мы его выберем, к нашим услугам окажется строка ввода формата сообщения. Обратите внимание, что в строке можно указывать полезные плейсхолдеры, два из которых позволяют подставить информацию о брейкпоинте и одно, самое полезное, позволяет подставить результат вычисления произвольного выражения. Таким выражением может быть переменная или любая другая конструкция используемого вами языка программирования. Но это не имеет никакого смысла, если не поставить галочку «Automatically continue after evaluating actions». Именно она в паре с любым из действий позволит нам экономить время на дебаге. Больше не нужно писать print()
, пересобирать проект и ждать вечность. В любой момент времени, без перезапуска проекта вам доступен вывод в консоль отладки любой информации о ходе выполнения программы. А для знающих толк в извращениях дебаге Apple предусмотрела возможность воспроизвести выражения, используя встроенный синтезатор речи.
Shell command
Редактирование брейкпоинта с экшеном shell command
Нетрудно догадаться, что этот экшен позволяет запустить произвольную команду в стандартной оболочке терминала ОС. Как и «Log message», она позволяет вычислить результат выражения в текущем контексте и дополнить им аргументы вызова команды. Для чего это может быть полезно? Примеров использования можно придумать массу. Из реальной жизни: запуск троттлинга через Charles. Необходимо было замедлять запросы из определённой точки, при этом в остальное время соединение должно было быть полноценным. Я не успевал включать-выключать троттлинг вручную и ещё совершать действия в симуляторе. Такой трюк с брейкпоинтом и «Shell command» отлично меня выручил. В другой раз мне понадобилось изменять информацию на сервере прямо параллельно с запросом, чтобы отловить довольно странный баг. Тут тоже был кстати этот вид брейкпоинта. Особые извращенцы могут собрать конструкцию на Arduino с электрошокером и бить себя током при каждом срабатывании нежелательного кода. Шучу. Не пытайтесь это воспроизвести в реальной жизни.
Debugger command
Редактирование брейкпоинта с экшеном Debugger command
Одним из самых интересных видов экшенов я считаю «Debugger command». Этот экшен позволяет действительно безгранично влиять на отлаживаемую программу. Debugger command — это команды отладчика LLDB, а LLDB — это отладчик для проекта LLVM, который сейчас используется Apple и Xcode для сборки программ. Отладчик LLDB позволяет подключаться к процессу, прерывать выполнение программы и воздействовать на её память. Для этого отладчик имеет множество команд, некоторые из которых станут героями сегодняшнего повествования. Именно благодаря отладчику LLDB у нас в принципе есть такая замечательная возможность отлаживать программу, в частности устанавливать брейкпоинты. Начнём мы с самой известной команды — po
. Наверняка многие из вас уже не раз использовали эту команду при отладке, но для меня в своё время это стало открытием, хотя я уже имел некоторый опыт в разработке под iOS на тот момент. Po
— это сокращение от print object. Команда позволяет вычислить выражение из правой части от команды и распечатать в консоли результат выполнения. При этом у объекта запросится его debugDescription, если он определён, или просто description, если нет. У po
существует команда-прародитель — print
, или p
, которая точно так же вычислит выражение и распечатает результат, но только в этом случае вам будет доступна сырая информация об объекте или скалярном типе. Обе эти команды будут компилировать введенное выражение в текущем контексте, что неминуемо замедлит выполнение кода при срабатывании брейкпоинта. К счастью, в Xcode 10.2 Apple добавили ещё одну команду отладчика — v
, которая работает значительно быстрее. Она позволяет вывести в консоль значение переменной из текущей области видимости, но, в отличии от p
и po
, без компиляции выражения. Естественное ограничение, накладываемое этой особенностью, — вывод в консоль возможен только для хранимых свойств.
Пример использования команды «v» и её ограничений
Affecting execution flow
Такая комбинация (брейкпоинт + debugger command po + автоматическое продолжение) заменит нам описанную ранее Log message. Что же ещё мы можем сделать с помощью такой комбинации? Например, с помощью дебаггера мы можем пропустить выполнение нескольких строчек кода, будто они закомментированы. При этом вам не нужно пересобирать программу и заново воспроизводить условия. Для этого достаточно ввести thread jump --by 1
для скачка вперёд на одну строчку или же thread jump --line 44
для перехода, как вы уже могли догадаться, к 44 строчке. Но будьте осторожны — вы не можете на 100% безопасно перепрыгивать по строчкам. Дело в том, что вы можете перепрыгнуть через инициализацию некоторой переменной, и это вызовет краш. Дело осложняется тем, что Swift «ленив» по своей природе, и инициализация может происходить не там, где вам кажется. Плюс компилятор при сборке вашей программы вставляет дополнительные инструкции, например для управления памятью, пропуская которые вы рискуете получить в лучшем случае утечку, в худшем — краш.
Affecting debugger
Редактирование брейкпоинта с введенной командой
Кроме влияния на вашу программу, с помощью отладчика вы можете влиять на сам отладчик. Например, мы можем поставить брейкпоинт из брейкпоинта. Вы спросите, зачем это нужно? Бывают методы общего назначения, которые срабатывают по ряду триггеров. Например функция по отправке сообщения в аналитику может вызываться сотню раз в секунду, а нам нужно отловить именно ту отправку, которую породит нажатие на кнопку. В этом случае мы можем поставить брейкпоинт на метод нажатия кнопки и добавить команду установки брейкпоинта на произвольной строке программы в произвольном файле. Команда bp s -o -f Calc.swift -l 44
расшифровывается как breakpoint set one-shot на файл Calc.swift на строку 44. Модификатор -o
или --one-shot
создаст специальный тип брейкпоинта, который «живёт» ровно до момента своего срабатывания, а после исчезает. Таким нехитрым способом мы можем создавать интересные алгоритмы установки брейкпоинтов для отладки нетривиальных багов.
Other breakpoints types
Панель переключения видов левой функциональной колонки Xcode c открытым Breakpoint Navigator и несколькими брейкпоинтами
А есть ли ещё виды брейкпоинтов, о которых мы можем не знать? Конечно, есть. Xcode позволяет добавить некоторые виды брейкпоинтов, которые не относятся к какому-то конкретному файлу и строке. В Xcode есть вкладка Breakpoint Navigator, которая позволяет управлять уже созданными брейкпоинтами сквозь все файлы проекта, а также создавать новые. Внизу окна нашего IDE есть кнопка со значком плюса.
Нижняя функциональная панель левой колонки Xcode при открытом Breakpoint Navigator
Это позволяет использовать 6 дополнительных типов брейкпоинтов:
- Swift Exception брейкпоинт — брейкпоинт, останавливающий программу при срабатывании не перехваченного throw для Swift кода.
- Exception брейкпоинт — то же самое, но для мира ObjC. Может показаться, что это не актуальный в современном мире брейкпоинт, но это не так. Стоит помнить, что нам пока всё ещё нужен UIKit, написанный на ObjC, ошибки которого мы можем отловить с помощью такого вот брейкпоинта.
- Symbolic breakpoint — позволяет останавливать процесс выполнения программы при выполнении кода, ассоциированного с некоторым идентификатором, который Apple называет символом. О символах я расскажу чуть позже.
- OpenGL ES Error брейкпоинт — брейкпоинт, останавливающий программу при возникновении ошибки OpenGL при разработке соответствующих приложений.
- Constraint Error breakpoint — очевидно, остановит вашу программу при возникновении ошибки автолейаута.
- Test Failure breakpoint может вам помочь при отладке тестов.
Так как уместить в этой сессии обзор всех типов точек останова не представляется возможным, я остановлюсь только на самых часто используемых. По своему опыту — я всегда использую Exception breakpoint. Довольно часто при разработке программ я сталкиваюсь с перехваченными системными исключениями, отладить которые порой проблематично из-за крайне неинформативного call stack’а. Думаю, вы сталкивались хоть раз с такой или подобной ошибкой:
Сообщение в Debugger Console при падении приложения из-за не перехваченного исключения ObjectiveC
Exception breakpoint
Для того, чтобы сделать стек вызова более информативным, мы можем добавить Exception breakpoint. Он позволит остановить программу прямо на моменте выброса исключения и отследить цепочку событий, которые привели к такому результату. По умолчанию неперехваченное исключение вызовет аварийную остановку приложения, и в стеке вызова мы ничего полезного не увидим, т.к. исключение будет пробрасываться вверх по стеку вызова и вся информация о месте выброса будет утеряна. Exception breakpoint позволяет остановить программу в момент выброса исключения и уже привычными нами методами получить гораздо больше информации о проблеме, пройдясь по стеку вызова и просмотрев значения переменных, если это необходимо. Я считаю этот тип брейкпоинта очень полезным и использую его на всех проектах по умолчанию. Для этого в Xcode есть удобный механизм, который позволяет указать брейкпоинту уровень и хранить его на трёх уровнях:
- Проект.
- Воркспейс.
- Пользователь.
Просто нажмите на брейкпоинт правой кнопкой мыши и выберите Move breakpoint. Перенесённый на уровень пользователя, брейкпоинт будет доступен на всех проектах, какой бы вы ни открыли в вашем Xcode.
Symbolic Breakpoint
Окно добавления Symbolic Breakpoint
Вторым часто используемым типом брейкпоинтов является Symbolic Breakpoint. Ранее я уже писал, что этот брейкпоинт позволяет останавливать программу при выполнении кода, ассоциированного с каким-то символом, и обещал рассказать подробнее про символы. Так вот, символы — это человекопонятные идентификаторы, которые ассоциируются с тем или иным адресом в памяти. LLDB умеет маппить известные ей символы в адреса функций и наоборот. При каждой сборке проекта система создаёт особый бандл из специальных файлов в формате dSYM, которые расшифровываются как Debug Symbols. Эти файлы хранят что-то вроде таблицы, содержащей в себе некоторые адреса методов и некоторые идентификаторы, среди которых сигнатуры методов, имена файлов, смещения и номера строк. Именно благодаря этим файлам мы можем поставить брейкпоинт на строку файла, получить читаемый стек вызова или расшифровать crashlog приложения из AppStore.
Благодаря этому механизму мы можем поставить брейкпоинт на любом методе класса, зная только его название. При этом нам не нужно достоверно знать, где этот метод объявлен и доступны ли вообще нам исходные файлы. Давайте рассмотрим реальный пример. Вас перевели на новый проект, и первая задача — исправить непонятное поведение на форме ввода данных кредитной карты, когда посреди набора фокус вдруг перепрыгивал на поле ввода имени. Сходу ничего не понятно, кода много, но симптомы ясны. Для расследования необходимо понять, кто и почему инициирует смену фокуса. Можно долго читать код, искать логику в неочевидных расширениях классов, а как надоест — сделать наследника UITextField
, переопределив там метод becomeFirstResponder()
, поменять реализации и уже там поставить брейкпоинт. А можно за 10 секунд создать символьный брейкпоинт -[UITextField becomeFirstResponder]
, и программа остановится в момент смены фокуса. По цепочке бэктрейса мы сможем легко восстановить последовательность событий, которые приводят к нежелательным результатам.
У тех, кто пользуется таким видом брейкпоинта в первый раз, наверняка возник вопрос: а что это за символ -[UITextField becomeFirstResponder]
? Это ObjectiveC-сигнатура метода установки текста для лейбла. Использование ObjectiveC обусловлено тем, что UIKit написан именно на этом языке. Пара слов для тех, кто имел мало опыта с ObjectiveC. Знак минуса обозначает, что нас интересует инстанс-метод, а не метод класса, далее в квадратных скобках записывается название класса и через пробел метод, двоеточие указывает на то, что этот метод принимает параметр. Тут можно возразить, что пример притянут за уши. Я согласен — в хорошем коде не будет десятка мест с установкой текста лейбла, но моя цель — показать, как это может работать. Давайте рассмотрим более реальный пример. Допустим, для целей отладки нам может понадобиться распечатать последовательность показа вью контроллеров. Добавляем брейкпоинт с символом -[UIViewController viewDidAppear:]
, указываем дополнительное действие po NSStringFromClass([instance class])
и, конечно же, не забываем поставить галочку «Automatically continue after evaluating actions».
Мы снова вынуждены использовать ObjC, даже в дополнительной команде, так как находимся в его контексте. Что касается Swift, то символы записываются как название ClassName.methodName(param:)
. Прописывать параметры не обязательно, LLDB попытается разрешить неоднозначность, если есть методы с одинаковым названием, но разными параметрами.
Рассказывая о символьных брейкпоинтах, я не могу не рассказать о возможности искать символы. Остановив программу любым способом, с помощью брейкпоинта или же просто нажав на пиктограмму паузы, мы можем воспользоваться командой image lookup -r -n
и найти интересующие вас символы в вашей программе и во всех загруженных библиотеках. Это действительно делает вас чуть ли не богом дебага, потому как вы властны искать символы везде, скажем в UIKit’e, искать приватные методы, останавливать и изучать внутреннее устройство системных библиотек. Надеюсь, я убедил в вас в силе этого метода и он не раз поможет вам сэкономить время.
Поиск приватного метода в UIKite с помощью image lookup
Watchpoints
Вотчпоинты позволяют останавливать программу, когда изменяется значение переменной. Корректнее будет сказать, что этот механизм позволяет следить за изменениями памяти по заданному адресу с заданным размером, но благодаря LLDB и Xcode разработчику достаточно сделать несколько кликов. Использование вотчпоинтов будет удобным, когда за изменением переменной не следует никакого сайд-эффекта прямо после изменения, но её состояние важно для отложенных вычислений. В ряде случаев может быть непонятно, что инициирует это изменение, и вотчпоинты позволят быстро узнать это. Достаточно приостановить выполнение программы в контексте нужного класса и воспользоваться окном Variables View. Тут будут перечислены переменные в текущем фрейме, доступные к отлаживанию. В крупных проектах вычисление доступных переменных и их типов может занимать некоторое время, поэтому иногда нужно подождать несколько (десятков?) секунд перед тем, как переменные будут доступны к манипуляциям над ними. Приятным бонусом является возможность «заглянуть» внутрь объектов Objective-C: функциональность Variables View позволяет увидеть приватные переменные этих объектов. По клику правой кнопки мыши по переменной нам доступно не так много опций — мы можем изменять значение переменных скалярных типов и, собственно, добавлять вотчпоинты.
Левая колонка DebuggerView, с контекстным меню по одной из переменных
Конечно же, вотчпоинт можно установить и командой LLDB: watchpoint set variable <variable_name>
, или, пользуясь функцией сокращения команд LLDB, просто: w s v <variable_name>
, но помните, что переменная должна быть видна отладчику, то есть находиться в текущем фрейме. Помимо установки брейкпоинта на изменение переменной, нам доступна установка вотчпоинта на область памяти: watchpoint set expression -- 0x0d78ab5ea8
. В обоих случаях при изменении содержимого памяти по отслеживаемому адресу произойдет прерывание программы. Установленные точки останова можно посмотреть командой watchpoint list
или в Debugger navigator. Так как любые вотчпоинты в итоге следят за адресом памяти, они становятся неактуальны после перезапуска и не сохраняются между перезапусками приложения. Даже если вы установили брейкпоинт на изменение переменной, под капотом механизм lldb вычислил её адрес и поставил вотчпоинт по этому адресу.
Affecting state
Будем закругляться. Последнее, о чем я хотел поведать в рамках этой статьи, — влияние на состояние приложения из LLDB. До этого я говорил только об изменении состояния какого-либо объекта системы при остановке по брейкпоинту. Но что, если нам требуется приостановить программу в произвольный момент времени? Нажатие на значок паузы приводит к приостановке программы, но вот вместо привычного нам кода мы увидим код ассемблера. Так как же добраться до произвольного объекта и выполнить с ним хитрые манипуляции?
Memory graph
Панель инструментов отладчика Xcode с подсвеченной кнопкой Memory Graph
Большинство iOS-разработчиков уже с первых месяцев своей работы используют этот инструмент. Для тех, кто ни разу им не пользовался, поясню. Memory graph позволяет сделать дамп памяти программы и отобразить в виде списка и графа все экземпляры объектов, которые сейчас находятся в памяти. Зачастую этот инструмент используется для выявления утечек объектов и анализа связей, которые привели к такому результату. Но сегодня от этого инструмента нам нужна только возможность остановить программу в произвольное время, найти нужный объект и узнать его адрес. Но что мы можем сделать с этой, казалось бы, бесполезной информацией?
На самом деле — всё, что угодно. Тут нам на помощь приходит мощь ObjC. Мы можем написать [0x7fafffa54a5 setValue:[UIColor redColor] forKey:@"switchedOffColor"]
— и мы уже поменяли значение цвета выключенной лампы на красный, используя стандартные методы NSObject
, доступные нам из коробки. Но что, если нам недостаточно этих методов, а нужно «дёрнуть» за свои рычаги? Всё просто — мы можем использовать кастинг: [(MyLamp *)0x7fafffa54a5 powerOff]
. Используя подобные техники можно воздействовать на любые сервисы, менеджеры и вью модели вашего приложения в любой момент времени. Мы можем сохранить значение этого адреса в переменную для удобства: (MyLamp *)$lamp = 0x7fafffa54a5
. Важно, что название переменной должно начинаться со знака доллара. Это переменная будет жить до полной остановки программы, то есть ей можно пользоваться не только в текущем сеансе отладки, но и при следующем прерывании программы в рамках одного запуска. ObjectiveС предоставляет поистине широкие возможности для того, чтобы похакать текущее состояние и обойти многие ограничения, но что делать с классами, доступными только в Swift? Конечно же, при попытке кастинга Swift-класса в ObjC-контексте ничего не произойдёт. К счастью, в Swift есть подобный механизм. Точнее, функция, имя которой — unsafeBitCast
. Мы вправе использовать его с адресом: unsafeBitCast(0x7fafffa54a5, to: MySwiftLamp.self)
и получить экземпляр класса MySwiftLamp
по адресу. Помните, её использование небезопасно, о чём нам намекает её имя, и её крайне осторожно нужно применять в коде приложения. Хотя, когда вам осознанно нужно будет использовать эту функцию, вы будете достаточно опытны для таких предупреждений.
View Hierarchy
Панель инструментов отладчика Xcode с подсвеченной кнопкой View Hierarchy
Рядом со инструментом Debug Memory Graph соседствует другой, не менее полезный инструмент, — View Hierarchy. Он позволяет быстро найти нужную View, посмотреть её параметры и лейаут, посмотреть активные и неактивные констрейнты. С iOS 11 этот инструмент ещё научился отображать ViewController’ы в иерархии, таким образом находить нужную View стало легче. Неочевидным тут является возможность фильтрации по имени и возможность отключить/включить отображение View, скрытых за экраном. Также я обратил внимание, что редко кто пользуется панелью управления внизу окна визуального отображения View.
Панель инструментов отладчика View Hierarchy
Кроме того, что она может регулировать глубину просмотра иерархии, она позволяет указать «включить отображение обрезанного контента» и «включать отображение констрейнтов». Обязательно поиграйтесь со всеми инструментами, я уверен — вы найдете полезное для себя применение для некоторых из них. Но в рамках этого рассказа нам нужна только возможность найти нужную View и узнать её адрес. Далее действуем по накатанной: po unsafeBitCast(0x7fafffa54a5, to: UIView.self)
, но в таком случае мы получим ошибку. Мы сейчас находимся в контексте ObjectiveC и не можем использовать po со Swift-кодом. Мы вынуждены использовать команду expession, или просто e с указанием языка: e -l Swift -- unsafeBitCast(0x7fafffa54a5, to: UIView.self)
, но и тут наши попытки не увенчаются успехом, мы получим ошибку error: <EXPR>:3:35: error: use of unresolved identifier 'UIView'
. Это произойдет из-за модульной природы Swift’а. Для успешного выполнения операции нам потребуется сделать импорт модуля UiKit: e -l Swift -- import UIKit
, и после этого мы наконец добьёмся результата: e -l Swift -- unsafeBitCast(0x7fafffa54a5, to: UIView.self)
.
Ура! Мы получили описание в консоли. Теперь давайте попробуем поменять, скажем, цвет её бэкграунда. Для начала сохраним View в переменную, чтобы облегчить процесс доступа к ней. Как и в случае с ObjectiveC, при создании переменной в LLDB контексте её название должно начинаться со знака доллара: e -l Swift -- let $view = unsafeBitCast(0x7fafffa54a5, to: UIView.self)
, далее мы можем применить необходимые изменения: e -l Swift -- $view.backgroundColor = .red
. Чтобы увидеть изменения, необходимо продолжить выполнение программы. Но есть способ увидеть изменения и без этого, находясь в режиме «паузы». Дело в том, что мы не видим изменения не потому, что приложение приостановлено, а потому, что все изменения UIView копятся в транзакцию CALayer и применяются только в конце «вращения» текущего RunLoop’а с помощью вызова CATrasaction.flush()
. Когда приложение приостановлено для отладки, операционная система всё ещё живёт своей жизнью, вы можете свернуть это приложение и открыть другое. Операционная система всё ещё опрашивает состояние UI вашего приложения и отрисовывает ваше приложение несколько десятков раз в секунду, только RunLoop приостановлен, CATrasaction. flush
не вызывается, изменения не применяются. Да, достаточно сделать вызов e -l Swift -- CATrasaction.flush()
, и мы увидим изменения.
На этом пора завязывать. Надеюсь, приведённые примеры кому-то облегчат жизнь, сохранят время и нервы. Добавьте в закладки, и в следующий раз, когда на поиск и отладку очередного бага у вас будет уходить более 15 минут, загляните в эту статью — возможно, какой-нибудь приём вам пригодится.
Отладка в CLion | Блог CLion
Советы и рекомендации
Содержание
Одним из ключевых преимуществ использования IDE вместо текстового редактора является возможность отладки. Отладка включает в себя возможность приостановить выполнение программы в произвольной точке и возможность проверить содержимое переменных.
CLion поддерживает отладку с помощью отладчика GDB (и LLDB в OS X, начиная с версии 1.1, и в Linux, начиная с версии 2016.2). Вот некоторые из основных поддерживаемых функций отладки.
Обновл. (изменения по сравнению с CLion 2016.1 и 2016.2)
Узнайте, как подключиться для отладки к локальному процессу, запущенному не из CLion (начиная с CLion v2016.1).
Проверка основных изменений (начиная с версии 2016.2) в драйверах GDB и LLDB и устранение таких проблем, как:
- Время ожидания команд.
- Проблемы с шагом.
- Проблемы с производительностью отладчика.
Подробнее читайте в нашем блоге по ссылке.
Попробуйте удаленную отладку GDB (начиная с v2016.2).
Точки останова
Чтобы проверить состояние программы в определенный момент, вам необходимо приостановить программу. Точки останова используются именно для этой цели.
Простая точка останова останавливает выполнение программы на определенной строке. Чтобы создать его, просто нажмите Ctrl+F8
(Windows/Linux)/ ⌘F8
(OS X) или щелкните мышью в серой полосе слева от кода. Строка с точкой останова будет выделена, а сама точка останова появится в виде красного круга: 9D (OS X)), выполнение программы остановится на выбранной вами строке.
Условная точка останова остановится на определенной строке, только если выполняется какое-либо условие. Чтобы отредактировать условие, вы можете щелкнуть правой кнопкой мыши точку останова и ввести условие в появившемся окне. Вы даже получаете автозавершение кода прямо в редакторе!
Когда это всплывающее окно открыто, вы можете нажать Ctrl+Shift+F8
/ ⇧⌘F8
, чтобы открыть полное окно редактирования точки останова:
Некоторые из доступных здесь опций включают:
- Приостановить — этот флажок определяет, будет ли выполнение приостанавливаться в определенной точке или нет. Если оставить этот флажок неотмеченным, выполнение программы продолжится, но все правила точки останова (например, ведение журнала) будут по-прежнему выполняться.
- Condition — определяет условие, при котором срабатывает эта точка останова. Отсутствие этого гарантирует, что точка останова всегда будет хит.
- Сообщение журнала на консоль записывает на консоль информацию о достижении точки останова.
- Выражение оценки журнала позволяет вам регистрировать результат определенной оценки.
- Удалить после нажатия гарантирует, что после того, как вы нажмете точку останова один раз, точка останова будет удалена. Это может быть полезно в тех случаях, когда вы хотите зарегистрировать только первое попадание в конкретную точку.
- Отключено до тех пор, пока не будет достигнута выбранная точка останова. делает именно то, что говорит: она отключает текущую точку останова до тех пор, пока не встретится какая-либо другая точка останова. Это полезно в ситуациях, когда, например, вы хотите исследовать точку в коде только тогда, когда она вызывается из определенной функции по вашему выбору. Здесь есть два варианта:
- Отключить снова отключает точку останова после ее срабатывания до повторного срабатывания зависимой точки останова (в этом случае она снова включается).
- Оставить включенным оставляет точку останова навсегда включенной и, таким образом, больше не зависит от любой другой точки останова, срабатывающей первой.
Точки останова исключения
Но это еще не все! Помимо обычных точек останова, CLion также поддерживает точек останова по исключениям , которые, как следует из названия, срабатывают, когда программа генерирует исключение.
Набор параметров, связанных с точками останова исключения, аналогичен точкам останова строки: вы можете указать, хотите ли вы приостановить выполнение, записать сообщение в консоль, удалить исключение после его возникновения или включить его только тогда, когда сначала сработает какая-либо другая точка останова. :
Пользовательский интерфейс отладчика
Итак, что именно происходит, когда отладчик достигает точки останова? Помимо приостановки выполнения, вы увидите следующее окно инструмента отладки:
Здесь многое происходит, поэтому давайте начнем с обсуждения двух основных вкладок (так сказать, вкладок верхнего уровня). Это:
- Debugger — показывает различные параметры отладки, которые мы вскоре обсудим.
- Консоль — в этой области отображается вывод командной строки, если он есть в вашем приложении.
Непосредственно справа от этих вкладок находится набор кнопок, позволяющих перемещаться по отлаживаемому коду. Они позволяют вам
- Показать точку выполнения (
Alt+F10
), - Перешагнуть через (
F8
), - Шаг в (
F7
), - Принудительный шаг в (
Alt+Shift+F7
), - Выйти (
Shift+F8
), - и Выполнить до курсора (
Alt+F9
).
Также есть кнопка, позволяющая Вычислить произвольное выражение ( Alt+F8
) — мы поговорим об этом позже.
Слева от вкладок находится вертикальный столбец кнопок, который содержит элементы управления более высокого уровня для отладки, включая кнопки для возобновления выполнения или остановки приложения, возможность отображать настройки точки останова и другие различные элементы управления.
Вернемся к вкладке Debugger . На этой вкладке происходит много всего. Прежде всего, слева вы можете выбрать потоки, которые хотите проверить. Современные приложения работают во многих потоках, поэтому вы можете выбрать один из выпадающего списка:
Непосредственно под ним находится фрейм стека, т. е. список вложенных функций, которые были вызваны при выполнении кода. Каждая запись содержит полное имя функции (или конструктора), имя файла и номер строки. Щелчок по строке приводит к тому, что CLion открывает соответствующий файл с указанным номером строки:
Справа от фрейма стека у нас есть две вкладки: Переменные и GDB (LLDB) . Мы поговорим о переменных чуть позже; что касается GDB (LLDB), на этой вкладке, по сути, отображается вывод командной строки из самого GDB (LLDB), поскольку это отладчик, который используется для отладки нашего приложения.
Переменные
Самый простой способ просмотреть состояние переменной — это, конечно же, код. Просто наведите указатель мыши на нужную переменную, и вы должны увидеть что-то вроде следующего:
Если в этот момент вы нажмете Ctrl+F1
(Windows/Linux)/ ⌘F1
(OS X), появится окно, содержащее внутренние состояния переменной, за которой вы следуете:
Конечно, вы получите более полное представление о переменных в окне инструментов Debug . Для выбранной функции в кадре стека на вкладке Variables отображается состояние всех переменных. В сложном приложении может быть очень занят:
Для любой переменной мы можем развернуть дерево, чтобы увидеть его содержимое:
Если вы хотите немного убрать шум, просто щелкните правой кнопкой мыши переменную и выберите Inspect : откроется отдельное окно. только для проверки этой переменной:
Вполне возможно изменить значения переменных в сеансе отладки. Щелкните правой кнопкой мыши переменную и выберите Установить значение . Редактор откроется вместо текущего значения, позволяя ввести новое значение:
Рендереры GNU STL
В качестве особого усовершенствования процесса отладки CLion обращается с контейнерами STL с особой осторожностью, гарантируя, что вы получите наилучшее возможное представление в процессе отладки. Например, вот посмотрите, как std::map
может быть представлено в отладчике:
Эта функция работает в GCC, а в случае Clang она работает только для libstdc++. Для этого необходимо добавить следующий параметр в CMakeLists.txt 9.0039 :
установить (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libstdС++")
Часы
Захват каждой переменной в каждой отдельной точке приводит к получению слишком большого количества информации. Иногда вам нужно сосредоточиться на конкретной переменной и на том, как она изменяется во время выполнения программы, включая мониторинг изменений, когда рассматриваемая переменная не является локальной для проверяемого кода. Для этого предназначена область Watch окна инструментов Debug .
Чтобы начать просмотр переменной, просто нажмите кнопку Добавить ( Alt+Insert
(Windows/Linux)/ ⌘N
(OS X)) и введите имя наблюдаемой переменной. Здесь также доступно завершение кода.
Можно также выбрать существующую переменную, щелкнуть ее правой кнопкой мыши и выбрать Добавить в часы . Теперь окно будет отображать значение переменной, даже если вы находитесь в какой-то вложенной части кадра стека:
Вычисление выражений
Вы можете видеть состояния переменных в точке останова, но что, если вы хотите увидеть сумму двух переменных или сразу же оценить результат вызова функции? Для этого тоже есть функционал. Просто нажмите кнопку Evaluate Expression ( Alt+F8
) в окне инструментов Debug и введите свое выражение. Как всегда, здесь вы получаете завершение кода, и после того, как вы нажмете кнопку Оценить , в области результатов ниже отобразится результат оценки:
Вы также можете использовать сочетание клавиш ( Ctrl+Shift+Enter
), чтобы добавить это выражение в часы. Правильно — часы могут содержать произвольные выражения, а не только отдельные переменные!
Посмотрите возможности отладки CLion в действии:
Заключение
В этом посте показано, что CLion может сделать для вас при отладке. Вы можете оценить эти функции бесплатно в течение 30 дней, просто скачав сборку с нашего сайта. Попробуйте и дайте нам знать, что вы думаете! ■
Запись вебинара: CLion, Встреча современного C++ IDEMUC++ в JetBrains: CMake и CLion
После VK_DEVICE_LOST, какие есть варианты? - Вулкан
д. хаббард
#1
Это недостаточно сильная сторона, чтобы стоит открывать баг на github, поэтому я просто отмечаю его здесь.
Из этого сообщения в блоге о VK_NV_device_diagnostic_checkpoints, vkGetQueueCheckpointDataNV можно использовать после ВК_ОШИБКА_УСТРОЙСТВА_ПОТЕРЯН
.
Вот соответствующая цитата из спецификации Vulkan:
Если устройство обнаруживает ошибку во время выполнения, реализация вернет приложению ошибку
VK_ERROR_DEVICE_LOST
в определенный момент во время выполнения хоста. Когда это происходит, приложение может вызвать vkGetQueueCheckpointDataNV для получения информации о самых последних диагностических контрольных точках, выполненных устройством.
Если я правильно прочитал спецификацию, это своего рода аналог VK_EXT_debug_utils и VkDebugUtilsLabelEXT. Но метка отладки сообщается приложению только в VkDebugUtilsMessengerCallbackDataEXT, который отправляется приложению только при создании сообщения журнала.
Насколько интересно новое расширение, позволяющее приложению запрашивать VkDebugUtilsMessengerCallbackDataEXT из очереди VkQueue после VK_ERROR_DEVICE_LOST, как теперь могут делать устройства NVidia с расширением поставщика?
д. Хаббард
#2
Похоже, что VK_AMD_buffer_marker может делать то же самое:
- Записать уникальное 32-битное значение с уникальным смещением в видимый хосту буфер, отведенный для отладочных маркеров, с помощью vkCmdWriteBufferMarkerAMD
- Хост может проверить буфер после получения ошибки VK_ERROR_DEVICE_LOST.
д. Хаббард:
На данный момент я только рискну предположить, но должна быть возможность доказать теорию и посмотреть, что произойдет.
Редактировать: Учтите, что в спецификации этого расширения указано, что его можно использовать после потери устройства.
крон
#3
Насколько интересно новое расширение, позволяющее приложению запрашивать VkDebugUtilsMessengerCallbackDataEXT из очереди VkQueue после VK_ERROR_DEVICE_LOST, как теперь могут делать устройства NVidia с расширением поставщика?
Слои, используемые для отчета любые VK_ERROR_*
. Это было сочтено плохим, поскольку уровни проверки должны отлавливать логические ошибки приложения (и включаться только в отладочной сборке), а не ошибки времени выполнения. Я думаю, что эта функция была перемещена (или, по крайней мере, рассмотрена) в новый слой «помощник».
На данный момент я только рискну предположить, но должна быть возможность доказать теорию и посмотреть, что произойдет.
Не уверен, что вы имеете в виду. В расширениях прямо сказано, что они работают даже после VK_ERROR_DEVICE_LOST
, как вы цитируете. Где опасная догадка?
д.хаббард
#4
крон:
Слои, используемые для отчета любые
VK_ERROR_*
. Это было сочтено плохим, поскольку уровни проверки должны отлавливать логические ошибки приложения (и включаться только в отладочной сборке), а не ошибки времени выполнения. Я думаю, что эта функция была перемещена (или, по крайней мере, рассмотрена) в новый слой «помощник».
Мы говорим об одном и том же? VK_ERROR_DEVICE_LOST — это явно плохо, и включение слоев проверки может помочь, но они не будут ловить все. Вот несколько расширений (не слоев), которые могут помочь отладить проблему, которую слои не уловили:
- VK_NV_device_diagnostic_checkpoints
- VK_AMD_buffer_marker
Просто ради аргумента предлагаю тест:
- Напишите приложение, которое не имеет ошибок проверки и использует динамическую индексацию дескриптора для передачи массива изображений в шейдер
- Измените шейдер так, чтобы он выходил за пределы массива изображений
Это всегда должно приводить к ошибке VK_ERROR_DEVICE_LOST, а также не сообщать об ошибках на уровнях проверки. (Да, это именно то, что делает проверка с помощью графического процессора, но игнорируйте это ради аргумента. )
krOoze:
Не уверен, что вы имеете в виду. В расширениях прямо сказано, что они работают даже после
VK_ERROR_DEVICE_LOST
, как вы цитируете. Где опасная догадка?
Мы говорим об одном и том же? Вот весь мой пост. Я предполагаю, что VK_AMD_buffer_marker — это расширение (не уровень) не гарантирует доступности после VK_DEVICE_LOST, но я предполагаю, что смогу заставить его работать из-за использования буфера.
д.Хаббард:
Похоже, VK_AMD_buffer_marker может делать то же самое:
- Запишите уникальное 32-битное значение с уникальным смещением в видимый для хоста буфер, отведенный для отладочных маркеров, с помощью vkCmdWriteBufferMarkerAMD
- Хост может проверить буфер после получения ошибки VK_ERROR_DEVICE_LOST.
На данный момент я только рискну предположить, но должна быть возможность доказать теорию и посмотреть, что произойдет.
крон
#5
Мы говорим об одном и том же?
Вероятно, нет. Вы предположили, что VkDebugUtilsMessengerCallbackDataEXT
(следовательно, сообщение уровня проверки). Это та часть, на которую я ответил.
VK_AMD_buffer_marker - это расширение (не слой) не содержит гарантии доступности после VK_DEVICE_LOST
Ну ладно. Я предположил, что вы указали гарантии в своих пунктах, а не догадки.
В спецификации указано:
Основная цель этих маркеров — облегчить разработку инструментов отладки для отслеживания того, какая конвейерная команда способствовала потеря устройства .
Так что, видимо, в этом смысл расширения. Это следует повторить в нормативных частях спецификации. Я предлагаю вам сделать вопрос.
д.хаббард
#6
Ах, я проглядел этот язык в VK_AMD_buffer_marker.
Спасибо! Я обновил сообщение выше.
система закрыто
#7
Эта тема была автоматически закрыта через 183 дня после последнего ответа. Новые ответы больше не допускаются.
RenderDoc
Открытая разработка
Я сам работаю над RenderDoc, и вы всегда можете связаться со мной с любыми проблемами или комментариями. Я отвечу вам напрямую и лично, и я привык помогать людям с частными проектами или проектами, на которые распространяется соглашение о неразглашении.
Открытый исходный код
RenderDoc является 100% открытым исходным кодом, и вся разработка происходит на github. Ознакомьтесь с исходным кодом и посмотрите, как реализована какая-либо функция, сообщите об обнаруженной ошибке или запросите новую функцию или улучшение.
Акцент на юзабилити
Юзабилити имеет значение. Инструменты должны иметь низкий барьер для входа и быть простыми в использовании и понимании. RenderDoc максимально упрощает процесс начала работы и упрощает общие рабочие процессы.
Опора платформы
RenderDoc поддерживает Windows 7, 8.x, 10, Linux, Android и Stadia для захвата и воспроизведения без дополнительной настройки. Поддержка Nintendo Switch™ предоставляется авторизованным разработчикам отдельно в составе NintendoSDK. Захваты переносимы между различными платформами и оборудованием.
Настраиваемый
Помимо возможности изменять исходный код для изменения или настройки поведения, RenderDoc встраивает среду выполнения Python для программного доступа к захвату кадров.
Широко используемый
RenderDoc является предпочтительным отладчиком для многих людей в игровой индустрии, научных кругах и любителей. Интеграция на уровне движка поставляется в Unity и Unreal.
С RenderDoc у меня очень удобный рабочий процесс: я могу открыть редактор Unity в режиме DX11 и захватить кадр в RenderDoc, затем переключить редактор в режим Vulkan и снова захватить кадр. Затем я могу без проблем сравнить два снимка в RenderDoc.
- Микко Страндборг (Единство)
RenderDoc — самый легкий и простой отладчик фреймов, который я использовал, и он стал первым портом захода для отслеживания ошибки. Baldur всегда обеспечивает быструю и подробную поддержку, когда мы сталкиваемся с проблемой, даже не видя нашего кода.
- Бен Пэрри (Литейный цех 42)
Я использую RenderDoc все время, когда отлаживаю код DirectX. Это мой любимый инструмент для личных и рабочих проектов.
- Элизабет Баумель (Неверие)
Скриншоты
Новости
RenderDoc v1.0 прибыл
2018-03-06 15:03:00 • @baldurk
RenderDoc v1.0 уже здесь! Поддержка Android для GLES и Vulkan, пользовательский интерфейс Qt для Windows и многие другие улучшения.
Эта версия содержит несколько интересных новых функций:
- Пользовательский интерфейс Qt поставляется в Windows со многими улучшениями.
- Поддержка Android для GLES и Vulkan.
- Внутренний рефакторинг сериализации, обеспечивающий гибкий импорт/экспорт захватов RenderDoc.
- Централизованный инспектор ресурсов с подробной информацией обо всех ресурсах в захвате.
- Гораздо больше!
Полная информация и все подробности доступны в примечаниях к выпуску GitHub, так что ознакомьтесь с ними и загрузите сборку.
Как всегда, если у вас есть какие-либо вопросы, комментарии или любые другие отзывы, вы всегда можете связаться со мной по электронной почте, в твиттере или на канале IRC. Не стесняйтесь присылать мне сообщения, так как я всегда рад получить известие от пользователей RenderDoc.
- @балдурк
Статьи
Ранняя история RenderDoc
2017-06-27 21:10 • @baldurk
Сегодня исполняется 5 лет с момента первого коммита в оригинальном git-репозитории RenderDoc. Я написал несколько ностальгических слов о первых днях до его первого публичного релиза.
Полная статья
Краткое руководство по слоям Vulkan
2016-11-18 12:17 • @baldurk
У Vulkan есть много действительно хороших концепций, но до сих пор не уделялось должного внимания системе слоев, встроенной в экосистему API.
Полная статья
Вулкан за 30 минут
2016-02-16 16:01 • @baldurk
Я написал этот пост, имея в виду конкретную целевую аудиторию, а именно тех, кто хорошо разбирается в существующих API (например, D3D11 и GL) и понимает концепции многопоточности, промежуточных ресурсов, синхронизации и т.