Обновить
64K+

Отладка *

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

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

Коды ошибок — это гораздо медленнее, чем исключения

Время на прочтение12 мин
Охват и читатели23K
На современных 64-битных PC-архитектурах использование C++-исключений означает всего лишь добавление к функциям недостижимого кода с вызовами деструктора и ухудшение производительность менее чем на 1%. Такие небольшие ухудшения производительности сложно даже измерить. Обработка редких ошибок с использованием возвращаемых значений требует дополнительных операций ветвления, которые, в реалистичных сценариях, замедляют программы примерно на 5%. Такой подход, кроме того, менее удобен, чем использование исключений. Если выбрасывается исключение, то на «раскрутку» каждого кадра стека тратится примерно 2 мкс.



C считается самым быстрым языком программирования. В C++ есть возможности, которые лишь повышают удобство работы, не влияя на производительность, в сравнении с C, и возможности, которые на производительность влияют. Эти возможности очень помогают в деле улучшения качества кода. В результате ими, несмотря ни на что, достаточно часто пользуются. Полиморфизм времени выполнения — это буквально вездесущая возможность, а вот исключения распространены меньше.
Читать дальше →

Лучшие методики журналирования enterprise-приложений (с точки зрения инженера поддержки)

Время на прочтение15 мин
Охват и читатели14K

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

Давайте разберемся, как писать в журнал полезные сообщения, которые всем понравятся.
Читать дальше →

Устраняем старый баг в NVIDIA GeForce Experience

Время на прочтение7 мин
Охват и читатели17K

Предыстория


Несколько месяцев назад я решил попробовать сыграть в Microsoft Flight Simulator 2020. Копия нашей планеты, созданная Asobo при помощи фотограмметрии и машинного обучения, казалась подходящим местом для отдыха в эти трудные времена.

Я подключил свой верный беспроводной джойстик Logitech Freedom 2.4 и поднялся в небеса.



Спустя несколько часов полётов вокруг моей альма-матер и дома, в которой я провёл детство, настало время закругляться. Я настроил свой компьютер так, чтобы мониторы отключались через несколько минут неактивности, поэтому быстро понял, что больше они не отключаются.
Читать дальше →

Intel ControlFlag — система машинной отладки человеческих ошибок кода

Время на прочтение2 мин
Охват и читатели1.8K
Человеку, как известно, свойственно ошибаться. Самые вопиющие ошибки попадают в учебники, а с миллионами остальных нам приходится как-то жить и тратить свой рабочий ресурс на их исправление. По подсчетам исследователей из Университета Пенсильвании, на отладку кода уходит порядка 50% бюджета разработки ПО. Это чудовищно много, но надежда у человечества все-таки есть — будущее за машинными дебаггерами. На прошедшей совсем недавно конференции Intel Labs Day Intel представила ControlFlag — аналитическую систему машинного программирования, способную самостоятельно обнаруживать ошибки в программном коде.


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

Debugging в Julia — два способа

Время на прочтение9 мин
Охват и читатели3.4K


скришнот из metal slug 3


2020 год — это определенно год странностей. Мой код тоже часто включает в себя некоторые странные ошибки. И в данном посте я хочу показать вам несколько методов отладки кода на языке julia.

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

Баг в ESP-IDF: MDNS, Wireshark и при чём тут единороги

Время на прочтение5 мин
Охват и читатели7.1K

Всем привет. Я занимаюсь коммерческой разработкой в IoT, в основном мы используем модули от Espressif - ESP8266 и ESP32.

В рамках "догфудинга" мы иногда берём свои продукты домой и используем в повседневной жизни. И вот, однажды, от одного из сотрудников поступила жалоба: после установки новой тестовой прошивки на устройстве, его домашняя сеть сначала начала жестоко глючить и зависать, а потом ситуация нормализовалась, но наш девайс более не был виден ни в локальной сети, ни в облаке.

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

Разведка

BPF для самых маленьких, часть вторая: разнообразие типов программ BPF

Время на прочтение26 мин
Охват и читатели19K

Продолжаем серию статей про BPF — универсальную виртуальную машину ядра Linux — и в этом выпуске расскажем о том, какие типы программ BPF существуют, и как они используются в реальном мире капиталистического чистогана. Кроме этого, в конце статьи приведено некоторое количество ссылок, в частности, на две с половиной существующие книжки про BPF.


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


Если вы хотите узнать, как именно BPF помогает эффективно решать задачи защиты от DDoS атак, распределения нагрузки на серверы, реализации сетевого стека kubernetes, защиты систем от нападения, эффективной трассировки систем 24x7 прямо в проде и многие другие, то добро пожаловать под кат.


image

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

Дизассемблируем циклы, написанные на Си

Время на прочтение4 мин
Охват и читатели16K

Доброго времени суток.

Сегодня мы будем смотреть дизассемблированный код инструкций if, for, while, swich, которые написаны на языке Си. Воспользуемся radare2.

Дизассемблировать код

История о желании думать, работать и творить

Время на прочтение3 мин
Охват и читатели4.1K

Тестировщик детских конструкторов... Слышали о такой работе?! Кто-то скажет – работа мечты для мальчика первых 45-ти лет жизни. Собирай конструкторы и получай деньги. Но всё не так просто… Да и история не только об этом.

Читать далее

Обновления в смотрелке логов

Время на прочтение2 мин
Охват и читатели4.1K
Хотел бы поделиться с Вами рядом обновлений «смотрелки» для логов chipmunk. Описание займет не больше 2-х минут Вашего времени, но меж тем новые возможности могут оказаться весьма полезным подспорьем в Вашей повседневной работе.
Читать дальше →

Вскрытие покажет: Решаем лёгкий crackme и пишем генератор ключа

Время на прочтение3 мин
Охват и читатели24K
Доброго времени суток читающий. Мне хочется рассказать тебе про алгоритм решения одного лёгкого crackme и поделиться кодом генератора. Это был один из первых crackme, который я решил.

На просторах сети найден был наш подопытный. Это сrackme. Естественно, что необходимо изучить его. Для вскрытия нам понадобиться:

  • Немного языка Assembler
  • Логика вместе с отладчиком (IDA PRO)

Лекарство изготовим из яда австралийской змеи с помощью Python. Не будем терять времени.

image

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

Javascript: исходный код и его отображение при отладке

Время на прочтение7 мин
Охват и читатели5.8K

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

Читать далее

Я сомневался в юнит-тестах, но…

Время на прочтение6 мин
Охват и читатели7.7K
Когда я пишу тест, то часто не уверен, что мой дизайн будет на 100% удачным. И хочу, чтобы он давал гибкость в рефакторинге кода — например, чтобы затем изменить класс, не меняя код теста.



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

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

Ловим баги на клиенте: как мы написали свою систему для сбора клиентских ошибок

Время на прочтение15 мин
Охват и читатели11K

У нас в Badoo довольно много клиентских приложений. Помимо основных продуктов Badoo и Bumble, у которых есть как веб-версии (десктопная и мобильная), так и клиенты под нативные платформы (Android и iOS), ещё есть с десяток внутренних инструментов со своими UI.  Для сбора клиентских ошибок мы используем собственную разработку под кодовым названием Gelatо. Последние два года я работал над её серверной частью и за это время открыл для себя много нового из мира разработки Error Tracking систем. 

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

Читать далее

Обратная отладка виртуальных машин в QEMU

Время на прочтение7 мин
Охват и читатели7.2K

Обратная отладка - это как прокрутить фарш назад. Как запихнуть желток и белок обратно в скорлупу. Как сделать доллар по 6 рублей. В общем, она помогает нам находить источники сбоев в программах, перемещаясь "назад во времени" от места их возникновения.

Читать далее

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

Время на прочтение8 мин
Охват и читатели13K

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

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

Читать далее

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

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

Обновления в Chipmunk

Время на прочтение2 мин
Охват и читатели1.8K
Рад представить Вашему вниманию некоторые обновления «смотрелки» для логов chipmunk. Где-то стало удобнее, где-то практичнее, но обо всем по порядку… Под катом будет коротко, но интересно.
Читать дальше →

Почему язык С не помешает вам делать ошибки

Время на прочтение8 мин
Охват и читатели17K

Если вкратце: потому что мы так сказали.

:)

Ладно, это слишком короткое объяснение для статьи, дорогой читатель, и мои провокационные слова требуют объяснения.

Встреча Комитета по языку С — которую сначала планировали провести в германском Фрайбурге, но не срослось по понятным причинам, — завершилась 7 августа. Она прошла хорошо, мы продвинулись по всем фронтам. Да, мы действительно продвигаемся, уверяю вас, и язык С не умер.
Читать дальше →

8 продвинутых возможностей модуля logging в Python, которые вы не должны пропустить

Время на прочтение20 мин
Охват и читатели120K

Понимайте свою программу без ущерба для производительности


image


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


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

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