Обновить
64K+

Отладка *

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

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

PCIExpress 1.0 2.5GT/s analyzer на базе ПЛИС своими руками

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

На работе я занимаюсь созданием PCIExpress устройств на ПЛИС. Некоторые из ПЛИС имеют встроенное PCIExpress ядро, позволяющее работать с этим интерфейсом на уровне пользовательского приложения. ПЛИС серии ECP5UM фирмы Lattice использует Soft-IP Core для реализации протокола, написанный на языке HDL, а в микросхему лишь встроен блок, отвечающий за работу физического уровня. Мне пришла в голову идея попробовать сделать PCIExpress анализатор на базе этой микросхемы.

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

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

Читать далее

«Раздвижное» решето Эратосфена

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

Простые числа, согласно известному определению – такие числа, которые делятся только на 1 и само себя. Иначе, число считается составным, и его можно разложить на произведение простых чисел. Единица формально соответствует определению простого числа, но это число принято не относить ни к простым, ни к составным.

Как искать простые числа? Можно действовать напрямую, применяя определение: просто делить каждое данное число N подряд на все числа m<N.Такая стратегия тоже имеет смысл, и ее можно обсуждать, и даже думать о том, как ее совершенствовать, но сегодня у нас будет другая история.

Читать далее

Python: Явное лучше неявного

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

Приветствую, хабраюзер! Эта история началась со странного падения Python приложения. Сначала я не придал внимания данной проблеме: приложение запущено в Openshift и периодически падает. К такому поведению может приводить всякое, например, иногда ноды обновляют, а иногда случаются аварии и тогда одну или несколько нод выводят из эксплуатации. Однако со временем проблема стала регулярной и начала проявляться некоторая закономерность. При этом в Sentry не было каких-либо ошибок. Я был полностью уверен, что это какая-то типовая проблема и ее можно быстро решить, но как же я ошибался.

Читать далее

О дебаге Kotlin-корутин

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

Привет, Хабр. Хочу поделиться своим решением одной из проблем использования корутин в Kotlin.

Корутины в Kotlin - одна из значимых фич языка, которая позволяет писать асинхронных код в синхронном стиле. Корутины прекрасны во всём, до тех пор пока не возникает необходимость их дебажить.

Читать далее

Best practices в Code Review

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

Правильный процесс ревью кода — это процесс итеративного улучшения продукты и контроля.
Контроля того, что:
1) Cоблюдены общие правила и договорённости
2) Решение не избыточное и масштабируемое.
3) Решение покрывает все критерии приемки указанные в описании к задаче

Для начала будет хорошо задать в своей команды такие вопросы:
1) Сколько времени занимает ревью кода для средней (сферической в вакууме) задачи
2) Как вы минимизируете время ревью?
3) Как вы определяете, что ревью конкретной задачи сделано правильно?

Читать далее

Удаленная отладка приложений Kubernetes с использованием Visual Studio Code

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

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

Именно этот вариант мы рассмотрим сегодня и покажем, как запускать отладчик на кластере Kubernetes через IDE-среду Visual Studio Code (VS Code). В качестве приложения у нас будет программа на Go, но всё изложенное вполне применимо и к другим языкам программирования и отладчикам.

Читать дальше: Удаленная отладка...

Руководство по обработке ошибок в Node.js

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

Ошибки есть в каждом коде. Мы перевели гайд разработчика Айо Исайя, в котором он рассказывает о системе ошибок и о том, как их устранять.

Читать далее

Match/case vs If/else. Сравниванием скорость работы операторов в Python 3.10

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

Прошло уже достаточно времени с момента релиза Python версии 3.10. Самым главным и самым ожидаемым было введение оператора match/case (он же pattern matching). 

Однако далеко не всем разработчикам из комьюнити зашел данный оператор. Свидетельствуют этому даже комментарии под статьями на хабре (статья 1статья 2), которые были посвящены match/case.

На мой взгляд, новый оператор упрощает жизнь разработчикам, принимая на себя работу с проверкой типов данных или принадлежность определенному классу. Но, как мы все знаем, зачастую за крутые фичи, введенные в язык, программисту приходится платить. В данной статье я хотел бы осветить тему производительности оператора match/case и сравнить его с обычным if/else.

Ознакомиться

Введение в отладку на примере Firefox DevTools, часть 4 из 4

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

В заключительной части разберём, как добавить точку останова с условием, использовать console.log, не используя console.log, что делать, если хочется глубже погрузиться в отладку JavaScript, и даже как принять участие в разработке браузера.

Читать про точки останова с условием

Q&A по QA: разбираем вопросы митапа по автоматизации тестирования

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

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

В октябре мы провели онлайн-митап по тестированию, в котором спикеры из Badoo, Skillbox, Почтатех и SuperJob поговорили о своем опыте перехода от ручного тестирования к автоматизации, рассказали о подходах к стабилизации тестов для мобильных приложений и многом другом. Встречу посетили более 600 участников, а QA Lead SuperJob Антон Шкредов получил столько интересных вопросов, что мы решили сделать отдельный пост в блоге. Итогами разбора делимся под катом.

Запись митапа доступна по ссылке, а если смотреть неудобно, то главные тезисы доклада Антона можно почитать на Хабре.

Читать далее

Cи в роли промежуточного языка

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

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

Введение в отладку на примере Firefox DevTools, часть 3 из 4

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

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

Читать про стек вызовов

Ищем дедлок в .NET 5 с помощью анализа дампа

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

В жизни каждого инженера может произойти ситуация, когда процесс его приложения «завис» и не выполняет ту работу, которую должен. Причины могут быть разные и чтобы узнать их, нужно заглянуть во внутренности процесса и расследовать, что же там происходит. Для этого, можно снять дамп и проанализировать его. Каждый такой случай уникальный, но подходы к анализу дампов — общие. В этой статье я покажу, как расследовал одну из подобных ситуаций и пришёл к неожиданным выводам.

К расследованию

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

Пошаговый запуск программы в Linux x86, или как добраться до main()?

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


Статья предназначена для тех, кто хочет понять процесс загрузки программ в Linux. В частности, здесь пойдет речь о динамической загрузке файлов ELF x86. На основе изложенной информации вы сможете лучше понять, как устранять проблемы, возникающие в программе еще до запуска main.
Читать дальше →

Введение в отладку на примере Firefox DevTools, часть 2 из 4

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

Продолжаем погружаться в отладку с Firefox DevTools. Во второй части разбираем, что такое точки останова в отладчике, как ими пользоваться и почему они — замена console.log.

Читать про точки останова

Chrome DevTools: Хитрости при отладке

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

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

В этой заметке я бы хотел остановиться на различных нюансах, полезных при отладке. Какие-то из них я почерпнул в сети (например в комментариях на Хабре), до каких-то додумался сам. Надеюсь вы найдёте для себя что-нибудь полезное.

Под катом:

— Как отладить popup-ы, которые исчезают при потере фокуса
— Как убить повисший JS-цикл, не убивая вкладку
— Различные нюансы работы с breakpoint-ми
— Методы ведения войны с sourceMaps
— Перехват network-запросов
— Как отладить race-condition
— Почему стоит опасаться галочки "disable cache"
— Что делать если у вас не Hi-DPI экран?

Подробнее

Как поменять один символ в коде и спасти день

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

Понедельник, 9 утра, сообщение в рабочем чате: "Всё сломалось, почините". Согласитесь, неприятная ситуация, особенно когда это ваш первый месяц работы, а сломалось что-то в функционале, с которым вы ещё ни разу не контактировали, да и не трогал его уже никто месяцами.

Читать далее

Введение в отладку на примере Firefox DevTools, часть 1 из 4

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

Используете для отладки JavaScript-кода только console.log? Есть способ получше! Отладчик в Firefox DevTools помогает быстро находить ошибки в коде и бережёт ваши нервы и время.

Узнать, как сберечь нервы и время

TbK — удобный, многофункциональный и бесплатный терминал для работы с COM-портами и поддержкой Modbus-протокола

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

Думаю, что каждый из embeded-разработчиков хотя бы раз в жизни пользовался терминалом для работы с COM-портом ПК - простой программой, позволяющей персональному компьютеру через встроенный интерфейс RS-232 (или USB-переходник) общаться с внешними устройствами, например такими, как GSM-модем или просто обмениваться данными с микроконтроллером в процессе разработки и отладки прошивки.

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

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

Читать далее

100% загрузка CPU: моя вина?

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

История бага JDK и связанной с ним ошибки разработки, приведшей к нештатной 100%-загрузке CPU. Что пошло не так, что можно было сделать лучше, и кто, в конце концов, оказался виноват?
Читать дальше →