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

Отладка *

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

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

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

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

Этой частью завершается серия статей, рассказывающих о разработке и тестировании сумматора с AXI-Stream интерфейсами. Мы покажем, как можно улучшить тестовое окружение за счет добавления возможности его настройки без повторной перекомпиляции исходников. Также мы модифицируем драйверы и мониторы AXI-Stream интерфейса, чтобы их можно было повторно использовать в других окружениях и проектах.

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

Новости

Обзор безопасных микроконтроллеров Flagchip для автомобильной электроники

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

Чем заменить санкционные микроконтроллеры STM, Kinetis и другие, особенно для ответственных и безопасных приложений? - На наши российские, конечно, если такие найти. Но ведь есть еще и микроконтроллеры из Китая, которые благодаря дружбе наших стран можно использовать вместо чипов ушедших с рынка иностранных компаний.

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

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

Начинаем разработку на Flagchip
Всего голосов 21: ↑20 и ↓1 +19
Комментарии 31

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

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

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

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

Автономный программатор SWD

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

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

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

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

Истории

Мнение три года спустя: стоил ли того переход с JavaScript на Rust?

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

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

С тех пор мы с потрясающими разработчиками создали Wick, — фреймворк приложений и среду исполнения, использующие в качестве системы основного модуля WebAssembly.

Спустя три года, выполнив несколько развёртываний в продакшен, написав электронную книгу и выпустив примерно сто пакетов на crates.io, я решил, что настало время поделиться своими мыслями о Rust.

Читать далее
Всего голосов 55: ↑54 и ↓1 +53
Комментарии 63

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

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

Вторая статья из цикла, посвященного проектированию с использованием стандартного интерфейса AXI-Stream, а также отладке и документации проектов.

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

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

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

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

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

Как внедрить гайд по стилю кода в проект

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

Всем привет! Меня зовут Соня Гусева, я фронтенд-разработчик в Яндекс Практикуме (или фронтенд-капибара). Вместе с командой мы развиваем платформу practicum.yandex.ru. Например, сделали поиск по пройденным материалам — тот самый, где «найдётся всё». И тёмную тему — для комфортной учёбы даже ночью.

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

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

Если вы любите больше смотреть, а не читать, с этой темой я выступила на Frontend meetup, где рассказала подробно о внедрении стиля кода в проекты. 

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

Баг памяти Windows, которому не менее восьми лет

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

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

Компания её не задокументировала (!)

Её реализация на самом деле не экономит память

Реализация может иметь чрезмерно высокие затраты ресурсов CPU

Эта функция ограничивает рабочий набор процесса (количество памяти, отображённое в адресное пространство процесса) 32 мегабайтами. Прежде чем читать дальше, попробуйте предположить, какое максимальное замедление может вызывать эта функция. То есть если процесс многократно затрагивает больше, чем 32 МБ памяти (допустим 64 МБ памяти), то насколько больше будут занимать эти операции с памятью по сравнению с ситуацией без ограничений рабочего набора? Остановитесь на минуту и запишите своё предположение. Ответ будет ниже в посте.

Читать далее
Всего голосов 36: ↑35 и ↓1 +34
Комментарии 16

Вышел Chipmunk.v3

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

Вышла новая версия программы для просмотра и анализа логов — Chipmunk v.3. Инструмент был полностью переработан с упором на производительность и переосмыслен с акцентом на простоту и удобство использования. Под капотом очень краткое описание нововведений и возможностей.

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

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

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

Всем привет!


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


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


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


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

Как у меня украли авторство патча

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

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

Читать далее
Всего голосов 70: ↑62 и ↓8 +54
Комментарии 116

Неполадки в отладке: как уязвимость в WinDbg позволяет атаковать разработчиков

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

Привет, Хабр! Меня зовут Александр Калинин, я занимаюсь разработкой средств обеспечения безопасности контейнерных сред в МТС RED, дочерней компании МТС в сфере кибербезопасности. Сегодня расскажу о том, как я обнаружил в отладчике WinDbg уязвимость, которая позволяет запускать произвольный вредоносный код на хосте разработчика и подменять библиотеки. Также поговорим о реакции Microsoft на мой репорт.

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

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

Систематический подход к отладке

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

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

[1] Когда я вернулась из своего творческого отпуска, мне отправили пару багов со словами: «мы сохранили их для тебя!»

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

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

Итак, как же я это делаю?

Если мне регулярно присылают баги, которые мне нужно устранить в незнакомых мне системах, то какой же процесс я использую?

И можно ли его применять к чему-то ещё, помимо кода?
Читать дальше →
Всего голосов 53: ↑52 и ↓1 +51
Комментарии 5

Любой достаточно продвинутый деинсталлятор неотличим от зловреда

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

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

0:000> r eax=00000001 ebx=008bf8aa ecx=77231cf3 edx=00000000 esi=008bf680 edi=008bf8a8 eip=7077c100 esp=008bf664 ebp=008bf678 iopl=0 nv up ei pl zr na pe nc cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010246 7077c100 ?? ???

Возможно, нам о чём-то скажет адрес возврата.

0:000> u poi esp 008bf6d4 test eax,eax 008bf6d6 je 008bf6b9 008bf6d8 xor edi,edi 008bf6da cmp dword ptr [esi+430h],edi

Странно, что мы исполняем код из какого-то места, не имеющего имени. Если приглядеться, то можно увидеть, что мы исполняем код из стекаesp — это  008bf664, то есть вызывающий проблемы код находится в стеке.

Кто исполняет код из стека?

Конечно, зловреды.

Давайте посмотрим, что пытается сделать это зловредное ПО.

Читать далее
Всего голосов 19: ↑18 и ↓1 +17
Комментарии 22

Дебажим Golang с помощью Delve

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

В этой статье мы рассмотрим, как дебажить программы, написанные на Golang, с помощью Delve. Delve — это сторонний отладчик для Go, скачать на github по ссылке https://github.com/go-delve/delve. Это хорошая альтернатива отладчику GDB golang (https://golang.org/doc/gdb), так как Delve куда больше возможностей для работы.

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

Утечки памяти в SSR: причины, поиск, устранение

Уровень сложности Сложный
Время на прочтение 12 мин
Количество просмотров 3.5K

Привет, Хабр! Меня зовут Владимир Захаров (@‌vzkhrv), я расскажу про SSR. На самом деле, утечки памяти работают в JavaScript везде – и на сервер-сайте, и на клиенте, поэтому информация будет полезна даже тем, у кого пока нет SSR. Давайте чуть подробнее познакомимся. Я ведущий фронтэнд-разработчик, около 8 лет в отрасли. В Зарплате.ру больше не работаю, но основной опыт, о котором хочу рассказать, получен именно там. Я люблю плавающие баги, разговоры о техдолге и шутки про ненастоящих программистов. Поговорим про утечки в памяти в SSR, про работу с памятью и про то, как всё это выглядит в браузере и в nodejs. Ну, и естественно, как со всем этим жить.

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

Магия степеней двойки, или Запуск кучи docker контейнеров

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

Праздник «день программиста» отмечается в 256-й день года, а это 2⁸, т.е. два в степени восемь. Это не просто так — на степенях двойки многое завязано в компьютерах и программировании, они повсюду. Настолько повсюду, что иногда даже слишком.

Благодаря празднику я вспомнил, что давно хотел написать эту статью, и поделиться несколькими техническими байками, где числа, являющиеся степенями двойки, вставляли «палки в колёса» мне или моим коллегам.

Читать байки
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 9

Реверс-инжиниринг промптов for fun and (no) profit

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

Этот материал посвящён взлому промптов Notion AI, семи методикам реверс‑инжиниринга промптов и рассказу о том, почему все ошибаются в своих мнениях о промпт‑инъекциях (prompt injection).

Вчера я получил доступ к публичной альфа‑версии Notion AI. У меня ушло 2 часа на то, чтобы, пользуясь промпт‑инъекциями, раздобыть полные тексты внутренних промптов, применяемых для реализации каждой из возможностей Notion AI.

Сегодня я публикую тексты этих промптов, но делаю это не потому, что я — человек безответственный; я отстаиваю точку зрения, в соответствии с которой в этом нет ничего страшного. И я воздаю должное команде Notion, которая так хорошо интегрировала возможности искусственного интеллекта в свой продукт.

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

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

Как добавить кастомный аутентификатор в KeyCloak и подружить его со сторонней системой

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

Всем привет.

Сегодня мы покажем вам простой пример, как в Keycloak можно добавить кастомный аутентификатор.

Как вы все знаете, Keycloak – это система адаптивной аутентификации, позволяющая реализовать фактические любой процесс аутентификации (ограниченный только навыками разработки на Java) и выступать в качестве Identity Provider для клиентов по протоколам OIDC и SAML.

В стандартном наборе представлено много типовых аутентификаторов. Но что делать, когда стандартных аутентификаторов недостаточно и необходимо реализовать свою логику? Официальная документация дает ответ: разработать аутентификатор самому.

Что мы вместе с нашим системным инженером направления кибербезопасности К2Тех Егором Туркиным в итоге и сделали.

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

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