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

8 советов по отладке для пользователей IntelliJ IDEA, о существовании которых вы возможно не знали

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

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

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

Но знаете что, отладчик IntelliJ IDEA имеет множество мощных и передовых функций, которые полезны для более эффективной и простой отладки. 

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

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

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

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

История бага JDK и связанной с ним ошибки разработки, приведшей к нештатной 100%-загрузке CPU. Что пошло не так, что можно было сделать лучше, и кто, в конце концов, оказался виноват?
Читать дальше →
Всего голосов 48: ↑43 и ↓5+38
Комментарии8

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

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

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

Узнать, как сберечь нервы и время
Всего голосов 12: ↑11 и ↓1+10
Комментарии17

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

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

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

Читать про точки останова
Всего голосов 4: ↑4 и ↓0+4
Комментарии5

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

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

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

Читать про стек вызовов
Всего голосов 14: ↑11 и ↓3+8
Комментарии3

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

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

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

#define CPP WTF

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

Уже давным-давно я работал в одной крупной компании в должности C++-разработчика и столкнулся с одной очень странной ошибкой. Я написал примерно такой класс:

class Foo {

static void* operator new() {

return ...;

};

};

И увидел огромный stack-trace ошибок о недопустимом вызове оператора в этом контекста (на тот момент я использовал MS Visual Studio 2013 и встроенный в него MSVC-компилятор). Я искал проблему часа два, и помогло мне только просматривание готовой единицы трансляции. Как вы могли догадаться, проблема была связана с препроцессором, но обо всём по порядку.

Читать далее
Всего голосов 49: ↑36 и ↓13+23
Комментарии21

Отладка React для самых маленьких

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

Эта статья для тех, кто только начинает свой путь в написании больших React приложений, но все еще использует только console.log для их дебага. Мы с вами рассмотрим работу с расширением для браузера "React Developer Tools" на простом примере, который в дальнейшем вы сможете применить в своих проектах. Это расширение дает возможность просмотра дерева компонентов, их props, состояния и контекста. Также достаточно просто отловить неэффективные компоненты, которые подвергаются повторному рендерингу, посмотреть сколько на это уходит времени и построить графики для визуализации эффективности компонентов. Благодаря этой информации вы не только сможете оптимизировать ваше приложение, но и более глубоко изучить React и понять все тонкости работы с ним.

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

Отладка приложений Node.js в Kubernetes?

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

Зачем вам это нужно?

При разработке кода на стороне сервера время от времени возникает проблема, которую очень трудно воспроизвести, наблюдаются утечки памяти или скачки процессора, которые вы не можете смоделировать локально, либо необходимо добавлять специальные журналы в приложение. При локальной разработке приложения используется инспектор Node.js для отладки и создания снапшотов памяти/процессора, которые помогут вам найти проблему, но как сделать то же самое в удаленной среде? К счастью, Node.js располагает отличной поддержкой для удаленной отладки, и в этой статье мы рассмотрим, как использовать ее в kubernetes.

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

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

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

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

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

Гайд по поиску и устранению утечек памяти в Go сервисах

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

Привет меня зовут Игорь и я профессионально занимаюсь веб разработкой с 2005 года, раньше это называлось "веб-мастер", а сейчас full-stack developer.

На данный момент я tech lead в одной классной команде и иногда мне приходиться писать много текста в confluense, что бы не объяснять всё дважды и заодно приумножить knowledge base компании. Этот гайд мои "заметки на полях" в ходе исследования одного инцидента.

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

Как мы в команде Oracle-разработки организовали deploy

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

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

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

Видеоускоритель Apple и невозможный баг

Время на прочтение9 мин
Количество просмотров11K
В конце 2020 года компания Apple выпустила M1 — первого представителя собственной архитектуры GPU под названием AGX, по слухам, созданной на основе серии Imagination PowerVR. С тех пор мы занимались реверс-инжинирингом AGX и созданием опенсорсных графических драйверов. В январе прошлого года я отрендерила треугольник при помощи своего собственного кода, но с тех пор нас продолжал преследовать ужасный баг:

Драйвер не справлялся с рендерингом больших количеств геометрии.

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


Частично отрендеренный по Фонгу кролик

Сложно было определить, какой объём мы можем рендерить без сбоев. Это зависело не только от сложности геометрии. Одна и та же геометрия могла рендериться с простыми шейдерами, но давать сбой со сложными.
Читать дальше →
Всего голосов 53: ↑53 и ↓0+53
Комментарии18

Как отлаживать коллекции Java с Lightrun на продакшене

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

К старту курса по разработке на Java делимся руководством о том, как отлаживать коллекции Java на продакшене с платформой Lightrun и избегать при этом неприятностей с методом list.toArray(). За подробностями приглашаем под кат.

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

Linux и TinyСC в браузере

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

Несмотря на то, что Clang in Browser довольно впечатляет, большинство существующих браузерных компиляторов все же находятся в экспериментальной стадии. Я же в этом проекте вместо портирования компилятора в WASM собираюсь пойти своим излюбленным путем – задействовать виртуальные машины. Этот способ не такой уж быстрый, особенно ввиду использования мной JS-эмулятора ЦПУ, но при этом все же позволяет добиться отличной производительности с помощью шустрого компилятора вроде Tiny С Compiler и кастомизированного Linux.
Читать дальше →
Всего голосов 53: ↑53 и ↓0+53
Комментарии0

Отладка, модификация и устранение багов в сторонних 32-х и 64-х разрядных приложениях под ОС Windows

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

В этой статье я хочу поделиться практическими методами отладки, модификации и устранения багов в 32-х и 64-х разрядных приложениях под ОС Windows, разработанных на языке C/C++, исходные коды которых по тем или иным причинам не стали достоянием общественности.

Этот пробел отчасти можно попытаться устранить, например, с помощью плагина Hex-Rays для IDA Pro, и зачастую удаётся довольно качественно восстановить нужный участок исходного кода, обнаружив в нём проблемное место. Но после этого всегда возникает вопрос - что с этим исправленным кодом делать дальше, как и где его можно использовать? На данном этапе мне всегда хотелось взять этот отдельно декомпилированный фрагмент программы, поменять в нём что-нибудь и затем каким-то чудесным образом «поместить обратно» в программу.

Далее будет описан один из возможных способов реализации этой идеи на практике.

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

PVS-Studio для проверки лабораторных работ на C и C++

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

C++ error: "pointer being freed was not allocated


Встретил очередной вопрос на Stack Overflow от человека, изучающего язык C++. Количество подобных вопросов можно сократить, используя PVS-Studio. Человек сразу может получить ответ, не отвлекая других.

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

Украшаем молоток: как автоматизировать разбор проблем в дебаггере

Время на прочтение10 мин
Количество просмотров2.2K
Ошибки и проблемные ситуации, которые возникают при работе высоконагруженных систем, имеют свои особенности и специфику. У нас в «Лаборатории Касперского» накопился целый ряд приемов по анализу таких ошибок. Часть приемов мы выложили в опенсорс в виде библиотеки скриптов для отладчиков, где есть в том числе JS-скрипты для WinDBG и Python-скрипты для GDB. В этой статье на живых примерах будет показано, как их использовать, и как автоматизировать хотя бы часть процесса анализа ошибок и подозрительных ситуаций.

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

Устранение утечек памяти с помощью профилирования

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

Если система работает длительное время, объём свободной памяти может уменьшаться, что может приводить к отказу некоторых сервисов. Это типичная проблема утечки памяти, которую обычно сложно спрогнозировать и выявить. Удобными инструментами для решения подобных проблем являются профайлеры кучи. Они отслеживают распределение памяти и помогают разобраться, что находится в куче программы, а также найти утечки памяти.

В этой статье мы расскажем об использовании профайлеров кучи, а также объясним, как спроектированы и реализованы популярные профайлеры кучи, например, профайлер кучи Go, gperftools, jemalloc и Bytehound.
Читать дальше →
Всего голосов 29: ↑29 и ↓0+29
Комментарии0

16 Способов Отладки и Диагностики FirmWare

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

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

Для аналогии буду каждому методу отладки метафорично приводить в соответствие аналогию из медицины.

Читать далее
Всего голосов 20: ↑17 и ↓3+14
Комментарии23