Как стать автором
Обновить
29.37

Отладка *

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

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

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

Время на прочтение 6 мин
Количество просмотров 1.4K
Блог компании Доктор Веб Отладка *Реверс-инжиниринг *

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

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

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 4

Новости

Python: Построение графиков по данным из файла

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 5.8K
Python *Программирование *Отладка *Визуализация данных *Физика
Туториал

В разных областях деятельности приходится строить графики. Построить график на компьютере можно десятками если не сотнями способов. В этот тексте я показал как строить графики при помощи интерпретируемого языка программирования Python.

Читать далее
Всего голосов 18: ↑10 и ↓8 +2
Комментарии 10

Полезные iOS-инструменты для дебаггинга

Уровень сложности Средний
Время на прочтение 15 мин
Количество просмотров 3.1K
Блог компании SimbirSoft Программирование *Разработка под iOS *Отладка *Swift *
Туториал

Привет! Меня зовут Альберт, я занимаюсь iOS-разработкой в компании SimbirSoft! Хочу поделиться инструментами для дебаггинга iOS-приложений, которые юзаю лично сам. Любой разработчик наверняка знает, что создание высококачественного приложения требует не только написания кода. Одна из важнейших составляющих достижения успеха в этом деле — эффективная отладка. К счастью, существует множество инструментов, которые помогут быстро и эффективно диагностировать, а также устранять проблемы. В этой статье мы подробно рассмотрим нативные и сторонние инструменты, доступные для отладки iOS-приложений, как использовать эти инструменты для диагностики и устранения распространенных проблем. Если интересно, тогда ныряйте под кат.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 15

Отладка приложений на Perl в Docker-контейнере

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 1.3K
Блог компании VK Perl *Отладка *
Туториал

Я Марсель Ардуанов, руководитель команды разработки VK и по совместительству Go-разработчик. После перехода в другое бизнес-подразделение я столкнулся с сервисами на языке Perl. Если вы посмотрите рейтинг языков программирования в 2023 году на Хабре, то увидите, что он не входит в этот список.

В компаниях до сих пор существуют сервисы на Perl, логику работы которых нужно понять и перенести на другой язык. Обычно в этом очень помогает отладчик. Но походив по интернету, я понял, что лёгкого решения для запуска отладчика нет, нужно разбираться. В этой статье я расскажу, как работать с зависимостями и отлаживать Perl-приложения с использованием современных технологий.

Читать далее
Всего голосов 29: ↑29 и ↓0 +29
Комментарии 7

Истории

Мониторинг — это боль

Уровень сложности Средний
Время на прочтение 13 мин
Количество просмотров 9.2K
Блог компании RUVDS.com Программирование *Отладка *Хранение данных *
Мнение
Перевод

И все мы выполняем его неправильно (в том числе и я).

Я должен признаться. Несмотря на то, что меня много раз нанимали в том числе и благодаря моему опыту работы с платформами мониторинга, я начал его ненавидеть. Инструменты мониторинга и наблюдаемости (observability) совершают тяжкий грех: обманом заставляют людей думать, что это простая задача. Очень легко мониторить маленькое приложение или сервис. Но почти ни одно из таких решений не масштабируется.

Вместо этого мониторинг превращается в бесконечную последовательность маленьких неудач. Метрики на какое-то время исчезают, логи перестают записываться на несколько часов, веб-UI для трассировок больше не работает. Мы настраиваем эти инструменты, готовясь, что сможем о них после этого забыть, но на самом деле они требуют постоянно растущих усилий по обслуживанию. Некоторые инструменты ломаются, и их больше никто не чинит. Я слишком часто приходил в новую компанию и видел, что в ней развёрнут нелюбимый мной поломанный Jaeger.

Такое ощущение, что сейчас как никогда много инструментов мониторинга, но вперёд мы не движемся. Похоже, вместо развития упор делается на увеличение объёма выходных данных приложений для роста доходов компаний, занимающихся мониторингом. Кажется, практически никакого прогресса не происходит с принципом передачи меньшего количества логов и метрик от клиента. Я создаю всё более сложные стеки для записи огромных объёмов данных, чтобы использовать их всё меньше и меньше.

В статье я расскажу о том, что, по моему мнению, нужно делать, а также поделюсь своими надеждами и мечтами. Прошу вас убедить меня, что я не прав и что есть более качественные решения.
Читать дальше →
Всего голосов 46: ↑46 и ↓0 +46
Комментарии 15

Самодельная отладочная плата на базе STM32G431CB — STM32G431 DevBoard V1.1

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 6.2K
Open source *Отладка *Программирование микроконтроллеров *DIY или Сделай сам
Обзор
💡 Сезон DIY

Ищите дешёвую и удобную в использовании отладочную плату на базе STM32G431CB? Предлагаю вам следующее решение... (К статье прилагаются: схема электрическая принципиальная, перечень элементов, сборочный чертёж печатной платы, производтсвенные файлы).

Перейти к статье
Всего голосов 38: ↑37 и ↓1 +36
Комментарии 19

Безопасная разработка и уязвимости кода. Часть1. Уязвимость

Время на прочтение 4 мин
Количество просмотров 2.8K
Блог компании OTUS Информационная безопасность *Отладка *

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

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 1

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

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 3.1K
Отладка *Программирование микроконтроллеров *Производство и разработка электроники *DIY или Сделай сам Электроника для начинающих
Обзор

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

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 16

Всё хорошо, но нужно переписать или почему ваш код не попадает в прод

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 3.2K
Python *IT-стандарты *Отладка *ООП *
Кейс

Разберу простую задачу, получение rss-ленты, и то, чем будет отличаться код, который просто получает ленту, от того, который собственно используется в производстве. 

Надеюсь материал будет полезен начинающим программистам и покажет, как примерно должна осуществляться разработка с прицелом на получение результата применимого в проектах. 

Читать далее
Всего голосов 12: ↑6 и ↓6 0
Комментарии 15

Когда отладочных символов стало слишком много

Время на прочтение 4 мин
Количество просмотров 3.9K
Блог компании Sportmaster Lab Программирование *Google Chrome Отладка *Браузеры
Перевод

Смерть, налоги и безудержно разрастающиеся браузерные движки — вот три вещи, в которых можно быть твёрдо уверенным. Актуально это было и на начало 2020 года, когда я осознал, что из-за безжалостного роста Chromium рано или поздно мы будем создавать файлы PDB (отладочных символов Windows), превосходящие предел формата PDB в 4 ГиБ.

В феврале 2020 года я зарегистрировал баг Visual Studio с просьбой увеличения этого предела, и спустя три года и три дня мы дёрнули рубильник, и теперь Chromium может создавать PDB большего размера. На тот момент PDB для Chrome занимал 95% от 4 ГиБ, а многие тестовые двоичные файлы уже преодолели этот порог, так что это было сделано вовремя.
Читать дальше →
Всего голосов 25: ↑24 и ↓1 +23
Комментарии 1

Как проводить кодревью?

Уровень сложности Средний
Время на прочтение 10 мин
Количество просмотров 9.4K
Программирование *Совершенный код *Отладка *Управление разработкой *Управление проектами *
Роадмэп

На работе предложили прочитать доклад. Вуаля! Далее расскажу:

✓ Что такое кодревью?
✓ Зачем нужен?
✓ Что проверяем?
✓ Типовые проблемы & решения
БОНУС!!! Результаты опроса: «Как вы делаете кодревью?»

Читать далее
Всего голосов 13: ↑7 и ↓6 +1
Комментарии 6

Трассировка стека вызовов в среде кооперативной многозадачности: стектрейсы, файберы, два ствола

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 1.6K
Блог компании VK Assembler *Системное программирование *Отладка *Tarantool *
Кейс

Персонаж с картинки — Трейсер из игры Overwatch

Привет, Хабр! Для отладки и анализа производительности часто используется трассировка (сбор) стека вызовов aka стектрейс. И если для трассировки стека различных потоков выполнения есть системные средства, то работа с асинхронными языками и фреймворками предполагает наличие отдельного контекста выполнения и стека вызовов для каждой единицы исполнения. В этой статье мы поговорим о файберах. Они прозрачны с точки зрения операционной системы, что влечет за собой определенные сложности. Если трассировка стека вызовов активного файбера тривиальна (можно представить, что кооперативной многозадачности вообще нет), то как собирать стектрейс с неактивных файберов?
Читать дальше →
Всего голосов 24: ↑24 и ↓0 +24
Комментарии 11

Что в имени тебе моём? Часть 2

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 750
Совершенный код *Компиляторы *Отладка *Разработка под Windows *

Как известно, интерпретируемые и компилируемые языки имеют преимущества и недостатки относительно друг друга. Одним из таких преимуществ/недостатков является сохранение связи имени переменной из исходного текста с соответствующим объектом программы во время выполнения.

Для интерпретируемых языков эта связь естественным образом сохраняется, так как интерпретатор собственно и «выполняет» исходный текст программы, т.е. имеет к нему непосредственный доступ.

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

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

Читать далее
Всего голосов 2: ↑1 и ↓1 0
Комментарии 1

С чего начинается embedded-разработка? Debug UART на Repka Pi 3 — подключение к отладочному терминалу Репки через UART

Время на прочтение 7 мин
Количество просмотров 4.4K
Настройка Linux *Отладка *Учебный процесс в IT Разработка на Raspberry Pi *Компьютерное железо
Туториал

В этой статье рассмотрим как подключиться к консоли Repka Pi 3 через UART.

Repka Pi как и другие компьютеры аналогичного семейства имеет Debug UART выведенный на 40 пиновый разъем платы.

Для начала работы нам потребуется программа PuTTY и USB to TTL конвертер с кабелем.

Скачиваем и устанавливаем программу текущую версию PuTTY с официального сайта https://www.putty.org/. На момент написание статьи версия PuTTY 0.78.

Вот так выглядит PuTTY после установки.

Начать свой Путь Embedded разработчика....
Всего голосов 25: ↑19 и ↓6 +13
Комментарии 16

Подвох с указателями на Default Subobject

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 1.8K
C++ *Разработка игр *Отладка *Unreal Engine *
Кейс

Пожалуй, любой С++ разработчик на Unreal Engine имел дело с созданием Default Subobject в конструкторе. Через этот механизм, в частности, создаются компоненты по-умолчанию для акторов. Казалось бы, какие нюансы могут быть связаны с использованием такого стандартного функционала?

Между тем, они есть. И если их не учитывать - можно получить весьма странные проблемы.

Читать далее
Всего голосов 7: ↑5 и ↓2 +3
Комментарии 4

Поймай меня, если сможешь: руководство по обработке исключений в Python

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 11K
Блог компании Wunder Fund Python *Программирование *Отладка *
Туториал
Перевод

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

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 21

Как дебажить код на JavaScript: примеры ошибок и советы новичкам

Уровень сложности Средний
Время на прочтение 16 мин
Количество просмотров 11K
Блог компании Яндекс Практикум JavaScript *Программирование *Совершенный код *Отладка *
Туториал

Привет, Хабр! Меня зовут Алексей Гмитрон, я наставник на курсе «Веб-разработчик» Практикума, а также работаю фулстек-разработчиком. 

Я начал программировать шесть лет назад, и обучение не сразу давалось легко. Одна из главных проблем — не умел выяснять, почему мой код не работает. Это долго тормозило развитие, но когда я начал понимать принцип, как думать при поиске ошибок — процесс сдвинулся с мертвой точки. 

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

Эта статья предназначена для тех, кто только недавно научился писать свои первые программы на JavaScript и испытывает трудности при поиске багов. Статья не столько, не про конкретные инструменты и вкладки в DevTools, сколько про то, о чём думать и куда смотреть при отладке.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 3

Фантомный double в прошивках для ядер Cortex-M*

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 11K
Отладка *Программирование микроконтроллеров *
Из песочницы

В последнее время появилось много микроконтроллеров на ядрах ARM Cortex-M*, которые поддерживают аппаратную реализацию математики плавающей запятой (FPU). В основном FPU работают с одиночной точностью (float) и её вполне достаточно для работы с сигналами, полученными с АЦП. FPU позволяет забыть о проблемах дискретизации и проблемах переполнения целочисленных вычислений. FPU быстр - все математические операции с одиночными float, кроме деления и взятия корня, занимают на Cortex-M4F один такт. Поэтому после перехода на Cortex-M4F мы вздохнули свободно и стали писать математику на float. Как же мы удивились, найдя в скомпилированном коде математические операции над double с программной, очень медленной эмуляцией.

В статье рассказывается, как обнаружить и исправить присутствие double в прошивках, где ядро аппаратно поддерживает тип float, но не поддерживает double.

Работа ведётся в среде IAR Embedded Workbench на примере реального кода на языке Си.

Читать далее
Всего голосов 86: ↑84 и ↓2 +82
Комментарии 25

Три способа отладки T-SQL кода

Уровень сложности Простой
Время на прочтение 4 мин
Количество просмотров 6K
Microsoft SQL Server *Отладка *
Из песочницы
Перевод

Написание нового кода = ошибки. С этим всё просто.

Избавится от ошибок – вот это сложная задача.

Программисты привыкли, что в их средствах разработки есть встроенные инструменты, показывающие, какая строка кода сейчас работает, отображают текущее содержимое переменных, выводят сообщения о процессе выполнения и т.д. Какое-то время в SQL Server Management Studio тоже был отладчик кода, но, начиная с версии SSMS v18, он был удален. Хотя даже когда отладчик был, я не фанател от него: SQL Server буквально мог прекратить обработку других запросов, пока выполнял ваш запрос. Это была катастрофа, особенно когда ваш запрос блокировал других пользователей, и всё это происходило на рабочей базе.

Мне бы хотелось, чтобы у нас был простой способ отладки T-SQL на рабочей базе без блокировок, но отладка T-SQL отличается от отладки в C#. Так что если ваш T-SQL код делает не то, что вы ожидали, вот несколько хороших способов для его отладки.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 16

Эй, Google, это твой баг

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 7.5K
Блог компании RUVDS.com Разработка мобильных приложений *Google API *Отладка *Геоинформационные сервисы *
Кейс
Перевод

Это история о том, как мы обнаружили баг в приложении для Android и упорно пытались доказать, что это баг Google, а потом ещё упорнее пытались заставить компанию его устранить.

Прежде чем вдаваться в подробности, приведу немного контекста.


▍ Да, это заняло больше четырёх месяцев!


Почему так долго? Позвольте мне объяснить природу бага и хронологические этапы его устранения.
Читать дальше →
Всего голосов 40: ↑39 и ↓1 +38
Комментарии 20

Вклад авторов