Как стать автором
Поиск
Написать публикацию
Обновить
25.2

Отладка *

Поиск и устранение ошибок в коде

Сначала показывать
Период
Уровень сложности

Отладка PHP сценариев в Docker-контейнере с помощью PhpStorm и Xdebug. Глубокое погружение

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров9.1K

Одним из ключевых аспектов успешной разработки является эффективная отладка кода.

Статья посвящена настройке и использованию PhpStorm, Xdebug и Docker для отладки PHP-скриптов в Docker-контейнере. Статья предлагает актуальную информацию (на момент написания) и оформлена в виде подробнейшего пошагового туториала. Информация действительна для ОС Windows. В других ОС возможны варианты.

Цель статьи — не просто создать пошаговой конспект настроек, а объяснить, как всё это взаимодействует. Это поможет избежать затруднений при изменении интерфейса IDE в будущем. Возможно, статья выглядит слишком педантичной. Но гуру всегда смогут прочесть её по диагонали, зато новички в этой теме найдут для себя много полезного.

Читать далее

Разработка и тестирование целочисленного сумматора с AXI-Stream интерфейсами. Часть 1

Уровень сложностиПростой
Время на прочтение9 мин
Количество просмотров4.3K

В данном цикле статей будет представлен процесс разработки и тестирования RTLмодулей на языке Verilog. В качестве примера будет рассмотрен целочисленный
сумматор с AXI-Stream интерфейсами. Мы разберем некоторые приемы и паттерны,
часто используемые при проектировании цифровых устройств. Также мы покажем
типовую структуру тестового окружения для проверки RTL-модулей.
Описанное нами окружение будет состоять из отдельных компонентов, у каждого из
которых будет своя конкретная задача. При правильном подходе к разработке этих
компонентов их можно будет повторно использовать в других тестовых окружениях.

Читать далее

Пристальный взгляд на отладку JavaScript приложений

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров6.9K

Всем привет!


Меня зовут Паша Востриков, я делаю на JS/TS много разного в «Лаборатории Касперского»: фронт, облачные сервисы (Node.js), штуки для коробочной поставки (OnPrem), платформенные компоненты и библиотеки. И, конечно же, Open Source.


Сегодня хотел бы затронуть тему отладки веб-приложений на JavaScript.


Итак, как отлаживаться? Как-как? console.log(1)


Читать дальше →

Использование IDA+IDAPython+Xdbg при восстановлении обфусцированного семпла

Время на прочтение6 мин
Количество просмотров3.5K

При изучении вредоносных программ динамического анализа в изолированных системах-песочницах в большинстве случаев достаточно для того, чтобы выявить природу той или иной угрозы и на основе полученной информации пополнить вирусную базу антивируса. Однако иногда в вирусную лабораторию попадают образцы, требующие глубокого понимания непосредственного алгоритма их работы. И тогда без статического анализа уже не обойтись. Например, для бэкдоров может понадобиться разбор протокола общения с C&C-сервером или алгоритма генерации доменных имен. А при анализе шифровальщиков необходимо выяснять, каким алгоритмом и какими ключами шифровались файлы. При этом часто такие троянские приложения запакованы или обфусцированы, и потому статический анализ может быть осложнен. Пример разбора такой сложной угрозы мы сегодня и рассмотрим. 

Итак, перед нами некая вредоносная программа для платформы Windows. Первым делом загрузим ее в IDA Pro Disassembler и попытаемся выполнить автоанализ. Как ни странно, это нам не удается, поскольку тот спотыкается уже в самом начале — на функции Main. Это значит, что для разбора образца нам потребуется приложить определенные усилия.

Читать далее

Обзор контроллера SSD1306 для OLED экранов

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров27K

В этом тексте я представил обзор контроллера графических монохромных OLED экранов SSD1306. В этом тексте я напишу с какой стороны следует подходить к этому ASIC(у). Перечислю достоинства и недостатки дисплея SSD1306.

Читать далее

Spring-потрошитель: жизненный цикл Spring Framework

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров78K

Ни для кого не секрет, что Spring Framework один из самых популярных фреймворков для приложений на языке Java. Он интегрировал в себя самые полезные и актуальные технологии, такие как i18n, JPA, MVC, JMS, Cloud и т.п.

Но насколько хорошо вы знакомы с жизненным циклом фреймворка? Наверняка вы сталкивались с проблемами поднятия контекста и освобождением ресурсов при его остановке, когда проект разрастается. Сегодня я попытаюсь наглядно показать вам это.

Читать далее

Язык моделирования Alloy и приключения с параллельными запросами к базе данных

Время на прочтение8 мин
Количество просмотров3.4K

Данная статья описывает небольшой пример того, как использование языка моделирования Alloy может помочь при разработке программного обеспечения.



О качестве программного обеспечения и инструментарии


В Typeable мы придаем огромное значение качеству программного обеспечения и прикладываем все усилия, чтобы обеспечить это качество. В настоящее время мы искореняем ошибки следующими способами:


  1. Анализ и создание спецификаций
  2. Устранение простых ошибок с использованием системы типов Haskell
  3. Стандартные юнит-тесты и интеграционные тесты
  4. Непрерывная интеграция
  5. Обязательные ревью кода
  6. Тестирование на стендах, проводимое QA инженерами
    (мы используем Octopod для оптимизации процесса разработки и QA)
  7. Тестирование в pre-production среде
  8. Ведение логов и контроль ошибок на этапе эксплуатации

Такое большое число шагов обеспечивает высокое качество кода, но при этом сказывается на затратах. Для выполнения этих шагов нужно и время, и труд.

Читать дальше →

Обработка ошибок в JavaScript

Время на прочтение8 мин
Количество просмотров12K

Привет, Хабр!

Тема обработки ошибок в JavaScript возникает не только у каждого новичка, но и матерого разработчика. Замечу, что тема уже довольно заезжена, поэтому я позволю себе резюмировать в кратком изложении все, что действительно эффективно и проверено в бою мною, коллегами и гуру IT.

Читать далее

Обновление для IDE EmBitz 1.11

Время на прочтение3 мин
Количество просмотров9.6K
На официальном форуме появилось обновление для IDE EmBitz 1.11. Оно включает в себя расширенный список поддерживаемых микроконтроллеров STM32, обновленные версии библиотек CMSIS, SPL, HAL и LL, а также текущую версию компилятора gcc-arm-none-eabi-9-2020-q2-update и GDB сервер EBlink, необходимый для прошивки и отладки микроконтроллеров.
Читать дальше →

Отслеживание ошибок в приложении React с помощью Sentry

Время на прочтение6 мин
Количество просмотров15K

Сегодня я расскажу вам об отслеживании ошибок в реальном времени в приложении React. Приложение внешнего интерфейса обычно не используется для отслеживания ошибок. Некоторые компании часто откладывают отслеживание ошибок, возвращаясь к нему после документации, тестов и прочего. Однако, если вы можете изменить свой продукт в лучшую сторону, то просто сделайте это!

Читать дальше →

Время в логах

Время на прочтение2 мин
Количество просмотров4.9K
Записи в логах о затраченном на ту или иную операцию времени дело вполне обычное. Пожалуй даже так, если я вижу логи без замеров (особенно если речь идёт о приложении обрабатывающим «тяжёлые» запросы), то вопрос к разработчикам возникает сам собой.

Измерение продолжительности стадий инициализации приложения; времени затраченного на обработку данных; времени отрисовки (рендеринга) и так далее позволяют нам судить о достаточности ресурсов и эффективности нашего решения так какового. Кроме того, часто именно тайминг может указать нам на ошибки при отсутствии явных признаков таковых в логах. Например, если обработка какого-нибудь запроса, занимающая как правило несколько миллисекунд, переодически «ест» больше секунды — это явный повод проверить обработчик запроса.

Поскольку нагружать приложение тоннами логов путь, мягко скажем, сомнительный, то разработчик как правило ставит тайминги именно на критически важные операции. А там где таймингов нет — вам вполне может пригодиться новый функционал в обновлённой версии «смотрелки для логов» chipmunk.
Читать дальше →

simctl: управление симуляторами Apple через терминал

Время на прочтение12 мин
Количество просмотров20K
Всем привет! Меня зовут Паша Лесюк, я работаю мобильным тестировщиком в компании Циан. В этой статье я расскажу о возможностях управления яблочными симуляторами из командной строки.

Читать дальше →

Android Remote Debugger — удаленная отладка Android приложений

Время на прочтение5 мин
Количество просмотров13K

Отладка является важным этапом разработки программного обеспечения. Поиск и исправление ошибок позволяют разрабатывать качественные продукты.


В этой статье я хочу поговорить об отладке именно Android приложений. Android Studio предоставляет нам различные инструменты профилирования, такие как:


  • logcat – инструмент для просмотра логов приложения, в том числе и исключений при краше. Его можно использовать как в Android Studio, так и в терминале, через adb;
  • Android profiler – мощный инструмент, который позволяет просматривать все сетевые запросы, загрузку процессора, памяти и батареи.

Также существует множество сторонних решений, позволяющих просматривать сетевой трафик, базы данных, shared preferences и др.
У всех этих инструментов есть преимущества и недостатки. К их минусам можно отнести следующее:


  • множество зависимостей различных инструментов;
  • сложность использования – как правило, все инструменты ориентированы на разработчиков и неудобны другим участникам команды, например, тестировщикам, аналитикам или back-end разработчикам. Обычно последним приходится дергать android-разработчиков, чтобы просмотреть какие-либо логи;
  • обязательное подключение телефона к компьютеру, например, через usb-кабель.

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


Android Remote Debugger


Мое решение является очень простым в использовании, так как позволяет отлаживать приложение прямо в браузере, без подключения Android устройства к компьютеру. Данное решение включает в себя четыре раздела для отладки:


  • Logging — просмотр логов приложения, включая краши;
  • Database — просмотр и редактирование записей в базе данных;
  • Network — просмотр всех сетевых запросов и ответов в удобном формате;
  • SharedPreferences – просмотр и редактирование данных SharedPreferences.
Читать дальше →

Ближайшие события

Не доверяйте информации о памяти в Диспетчере задач

Время на прочтение3 мин
Количество просмотров123K
За много лет использования Windows я привык к Диспетчеру задач. Оттуда я убил сотни приложений за плохое поведение. Там же смотрел, кто из них пожирает ресурсы. Пока я не начал работать с машинами, у которых сотни гигабайт памяти, а у приложений соответствующие запросы. В этой статье обсудим, почему Диспетчер задач плохо отслеживает память и что использовать взамен. Во-первых, о механизме выделения памяти в Windows.

tl;dr: Диспетчер задач скрывает информацию о подкачке (paged memory) и виртуальном пространстве процесса. Лучше используйте Process Explorer из комплекта Sysinternals.
Читать дальше →

Тестируем бесшовный WiFi с помощью голосового трафика

Время на прочтение22 мин
Количество просмотров12K


Продолжаем эксперимент, начатый месяцем ранее, когда мы построили Wi-Fi сеть с бесшовным роумингом и прошлись по офису с планшетом, наблюдая, будут ли происходить замирания и сбои при скачивании на него потокового видео? Эксперимент прошел удачно, проблем с потоком не было и отчет выложили здесь же на Хабрахабр. Но!

Но в комментариях к статье были выражены сомнения, ввиду того, что видеопоток мог буферизоваться и бесшовный вай-фай эмулировался за счет подкачки видео еще до перехода от одной точки доступа к другой и это видео, из буфера воспроизводилось после обрыва и восстановления сессии. Отвечая на эти вопросы мы снова нагрузили абсолютно ту же сеть, с теми же точками Edimax, ничего не меняя в их настройках (поднял те же параметры для другого SSID, чтобы не мешать офису со своими тестами по RADIUS серверу, который так же обкатываю для работы в этой сети). Использовали почти что голосовой трафик, который нельзя было заподозрить в буферизации. С удовольствием делимся результатами второй части эксперимента.
Читать дальше →

Переходим с STM32 на российский микроконтроллер К1986ВЕ92QI. Опрашиваем клавиши, генерируем ШИМ. Часть вторая

Время на прочтение30 мин
Количество просмотров23K

Вступление.

В предыдущей статье мы с вами повторили общую структуру таймера и детально рассмотрели ручной способ настройки ШИМ канала с использованием CMSIS. Но многим не нравится «копаться в регистрах» и они предпочитают принципиально другой уровень абстракции, позволяющий, как им кажется, упростить задачу. В этой статье я попытаюсь показать вам все плюсы и минусы данного подхода.
Читать дальше →

Реверс AGTH для воссоздания альтернативного GUI

Время на прочтение11 мин
Количество просмотров6.8K
Так как тема реверс инжиниринга довольно популярна на хабре, решил поделиться своими наработками по этой теме. Мне, как и многим любителям визуальных новелл, знакома такая программа, как AGTH (Anime-Game-Text-Hooker). Она позволяет извлекать текст из новелл для последующего перевода(большинство игр – японские). Разработка этой программы, судя по всему, была прекращена ещё в 2011м году, исходников найти не удалось, а так как душа хотела дополнительных фич, было принято решение отреверсить эту программу и на основе полученных данных воссоздать альтернативную оболочку со всеми недостающими мне функциями.
Читать дальше →

IO Ninja – программируемый эмулятор терминала/сниффер

Время на прочтение7 мин
Количество просмотров19K
ioninjaПриветствую вас, уважаемые хабровчане!

Сегодня я хотел начать рассказ об одном интересном продукте представляемой мной на хабре компании Tibbo. Продукт этот может оказаться полезен широкому кругу IT-профессионалов, включая системных администраторов, специалистов по информационной безопасности, и, наконец, простых разработчиков, которым нет-нет, да и приходится программировать общение с устройствами и другой низкоуровневый ввод/вывод.

Разговор пойдёт про программируемый терминал/сниффер IO Ninja (здесь и далее я буду опускать слово «эмулятор» и говорить просто «терминал»). Подозреваю, что само определение «терминал/сниффер» может выглядеть достаточно непривычно, если не сказать странно. Поэтому начнём с истории возникновения IO Ninja.
Читать дальше →

Отладка приложений для Android без исходного кода на Java: пару слов о breakpoints

Время на прочтение5 мин
Количество просмотров19K

О чем эта статья


Это продолжения моей вчерашней статьи об отладке приложений для Android без исходного кода на Java (если кто-то её не читал — я очень советую начать с неё). Вчера я давал пошаговую инструкцию как настроить и начать использовать связку Apk-tool плюс NetBeans. Два последних пункта там звучали примерно так:

13. Установите breakpoint на интересующую вас инструкцию… blah-blah-blah...

14. Сделайте что-нибудь в приложении, что бы ваша breakpoint сработала. После этого вы сможете делать пошаговую отладку, просматривать значения полей и переменных и т.д.

Дальше, в разделе «Подводные камни», я рассказывал почему мы не может начать отладку приложения с самого начала, например поставив breakpoint на какую-нибудь инструкцию метода onCreate(...) в activity, с которой начинает выполняться приложение.

В этой статье я расскажу как всё же можно начать отлаживать приложение без исходного кода на Java с самого начала. Эта статья опять-таки не для новичков. Нужно как минимум понимать синтаксис ассемблера Smali и уметь ручками патчить .smali файлы, грамотно вписывая туда свой код.

Всё равно хочу послушать!

Немного об отладке. Часть 1

Уровень сложностиСредний
Время на прочтение127 мин
Количество просмотров7.9K

Приветствую.

Вы когда нибудь отлаживали программы? Не врите, что нет. Благодаря отладчикам наши программы работают корректно (или хотя бы близко к этому).

Но вот знаете ли вы как отладка устроена: точки останова, шаги, бэктрейс, чтение переменных?

Нет или да - ответ не важен. Эта статья даст ответы на многие вопросы об отладке, которые вы, возможно, и не задавали себе.

В этой части рассмотрим ядро отладки, напишем свой собственный отладчик, рассмотрим реализацию gdb, а в конце посмотрим на отладку управляемых языков.

Путешествие на 20 минут