Рубрика «debug» - 7

Наше JEE приложение сделало скачок версии GWT с 1.7 сразу до 2.6.1. Когда-то были небольшие танцы с бубном для того, чтобы в среде разработки IntelliJ Idea настроить возможность отладки клиентской части. Отладка заключается в возможности ставить точки останова (breakpoint-ы) в Java-коде, но попадать в них из браузерного JavaScript-а, сгенерированного GWT из Java-кода. После обновления версии GWT старая конфигурация запуска отладки работать перестала, и мне пришлось познакомиться с GWT Super Dev Mode (SDM). После этого «знакомства» я понял, что выше упомянутые «танцы» были на самом деле предельно простой и понятной настройкой, по крайней мере, в сравнении с SDM. Надеюсь, кому-то эта статья очень поможет сэкономить пару-тройку дней блужданий по форумам и избавит от нескольких новых седых волос. В статье я расскажу про опыт запуска режима SDM в следующем окружении: IntelliJ Idea 14, JBoss EAP 6, GWT 2.6.1 с применением в проекте GWT RPC, браузер Chrome. Несмотря на то, что при релизе Idea 14 сообщили о доработках касательно отладки в GWT, думаю, что для версии 13 всё нижеописанное также применимо. Используемый сервер приложений также вряд ли как-то влияет на настройку SDM. Насчет версий GWT: для 2.6.0 применимо почти один-в-один, то же касается и 2.7.0 (сам не проверял, вычитал в Сети по ходу проведения исследований).
Читать полностью »

В давние времена разработки мобильных сайтов и приложений отладка была сложной задачей. Да, можно было заполучить устройство и быстренько проверить работу – но что было делать, если ты обнаруживал баг?

При отсутствии инструментов отладки приходилось полагаться на разные хаки. В целом они сводились к попыткам воспроизвести баг в десктопном браузере и затем отловить его при помощи Chrome Developer Tools или где-то ещё. К примеру, можно было уменьшить размер окна браузера или поменять user agent.

Грубо говоря, эти хаки не работали. Если ты правишь баг на десктопе, ты не уверен, что он исправлен на мобильном устройстве (МУ). Поэтому приходилось постоянно метаться между устройством и десктопом.

Теперь же у нас есть набор инструментов, позволяющих получать осмысленные данные прямо с МУ. Кроме того, можно использовать десктопные инструменты для отладки прямо на МУ.

В этой статье мы разберём несколько эмуляторов и симуляторов, которые позволяют быстро и легко тестировать сайты и приложения. Затем посмотрим на инструменты для удалённой отладки, позволяющие подключаться к МУ.
Читать полностью »

Наверняка уже все знают, что у UIView есть полезный метод recursiveDescription.
Вызов которого, вернет строку с описанием всей иерархии вью.

(lldb) po [[self view] recursiveDescription]
<UIView: 0x6a107c0; frame = (0 20; 320 460); autoresize = W+H; layer = […]
   | <UIRoundedRectButton: 0x6a103e0; frame = (124 196; 72 37); opaque = NO; […]
   |    | <UIButtonLabel: 0x6a117b0; frame = (19 8; 34 21); text = 'Test'; […]
   .....

Еще многие знают, что при помощи рантайма, можно получить список переменных/методов/свойств/протоколов/… класса. И обычно для этих целей пишут вспомогательный код. Но оказывается, все уже давно написано сотрудниками Apple. В UIKit.framework реализована категория с именем IvarDescription.

@interface NSObject (IvarDescription)
- (id)_shortMethodDescription;
- (id)_methodDescription;
- (id)__methodDescriptionForClass:(Class)arg1;
- (id)_ivarDescription;
- (id)__ivarDescriptionForClass:(Class)arg1;
@end

Названия метдов говорят за себя. Но давайте посмотрим, что же они возвращают.
Читать полностью »

Данная статья касается современных линуксов. Например, RHEL6 с ядрами 2.6.3х — подойдёт, а вот RHEL5 с ядрами 2.6.18 (кстати, наиболее популярный в продакшне) — увы, нет. И ещё — здесь не будет описания ядерных отладчиков или скриптов SytemTap; только старые-добрые простые команды вида «cat /proc/PID/xyz» в отношении некоторых полезных узлов файловой системы /proc.

Диагностика «тормозящего» процесса

Вот хороший пример часто возникающей проблемы, которую я воспроизвёл на своём лаптопе: пользователь жалуется, что команда find работает «значительно медленнее», при этом не возвращая никаких результатов. Зная, в чём дело, мы решили проблему. Однако меня попросили изложить систематический подход к решению подобных задач.

К счастью, система работает под управлением OEL6, т.е. на достаточно свежем ядре (а именно — 2.6.39 UEK2)

Итак, приступим к диагностике.
Читать полностью »

Доброго времени суток, коллеги!

Недавно команда разработчиков фреймворка Yii 2 порадовала сообщество нативной дебаг-панелью. Важная особенность этого дебаггера в том, что он пишет историю, и дает возможность исследовать отладочную информацию от каждого запроса к yii-проекту. Это делает простым и приятным занятием отладку ajax-запросов, страниц с редиректами, рендеринг графических изображений и прочее.

Внешний вид и принцип использования одной из ранних версий дебаггера в Yii 2 можно увидеть на видеоролике Александра Макарова (SamDark):

Вдохновленный этим замечательным инструментом, я решил портировать его на Yii 1.1. Код, который в итоге получился, можно посмотреть на github.
Читать полностью »

Когда разработка проекта идёт на компьютере, проблемы просмотра лога не встаёт. Но когда начинаешь разрабатывать на планшете, то всё становится гораздо печальнее. На iPad надо зайти через iTunes, найти свой лог, и только тогда можно посмотреть его содержимое. На Android всё ещё сложнее и неудобнее. Зачастую хочется видеть сообщения в real-time. Разработчики движка добавили много разных полезных вещей в профайлер, но к сожалению забыли о простой консоли, чтобы переключившись на её вкладку разработчик мог смотреть сообщения от своей игры и отправлять какие-то консольные команды прямо с компьютера на планшет.
Это упущение мы сейчас и будем исправлять.
Читать полностью »

Мне нравится Node.js, но совсем недавно я начал использовать её на серьёзных проектах. При этом я продолжил пользоваться моей любимой средой разработки*. И если для простых скриптов достаточно просто редактора, то для серьёзной разработки нужны серьёзные инструменты, в частности, дебаггер. Ничего готового для студии найти не удалось, поэтому я взял и за пару выходных сделал его сам:
image
Читать полностью »

Вообще-то у меня PhpStorm, но, думаю, все будет работать и в WebStorm.

Запускаем в командной строке

cd <path to Gruntfile>
node --debug-brk=64005 $(which grunt) img2base64

Где img2base64 — название нужного задания. Можно опустить этот параметр, чтобы запустились все задания.
Получаем debugger listening on port 64005

Далее в настройках WebStorm: Run → Edit configurations… → + → Node JS Remote Debug. Задаем название конфигурации (например, grunt), Host: 127.0.0.1, Debug port: 64005 (порт можно задавать любой от 1025 до 65535, главное везде один и тот же). Нажимаем OK. Задаем точку останова (breakpoint) и нажимаем кнопку Debug.
Отладка Grunt задания в WebStorm
Профит!
Читать полностью »

Однажды, холодным зимним вечером, я внезапно вспомнил, что не поделился простым секретом, как добиться простого питоновского счастья за пределами ASCII резервации в такой замечательно-бесплатной IDE как Eclipse с плагином PyDev. Причём счастья с отладкой и честным юникодом, что означает следующее: если вы назвали свою переменную кириллицей, вы сможете посмотреть у неё значение, поставив breakpoint, написать пару строк текста по-русски и у вас ничего не отвалится.
Да-да, уважаемый читатель, Eclipse PyDev не очень-то дружит с символами за пределами 0x7F и отладка очень любит отваливаться всякий раз при попытке прочитать значение кириллической переменной. Да какое там, простое наведение мышкой на юникодовый символ приводит к фатальным последствиям при отладке кода написанного на Python 3.x (UTF-8). Если же настройки вашей файловой системы отличаются от UTF-8, поздравляю, вы не сможете даже запустить ваш скрипт. Я имею в виду именно то, что например под Windows ваш замечательный скрипт с единственным словом по-русски просто выведет из строя PyDev.
Возможно я перестарался, сгущая краски, не пугайтесь, починить это в состоянии мы сами, просто прочитав эту небольшую инструкцию. В награду мы получим бесплатное средство разработки, довольно удобное, фантастически гибкое в настройках и усовершенствовании, вплоть до разработки на нескольких языках, со встроенным инструментом версионирования.
Под катом инструкция и неприличных размеров картинки.
Читать полностью »

Удобный отладчик для Python/Django проектов
Pudb — полноэкранный консольный дебагер с графическим интерфейсом. Большим плюсом является то, что в нем есть подсветка синтаксиса, дополнительные панели вывода информации, горячии клавиши и интерграция с IPython.

pdb, в сравнении с Pubd, показался жутно не удобным и ограниченым. Поиск ошибок стал занимать на много меньше времени и приносить больше удовольствия. При первом взгляде на него вспоминался Assembler и Turbo Pascal в студенческие годы в техникуме.

Если кто заинтересовался примеры установки и использованая под катом.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js