Рубрика «отладка» - 3

© Сериал "Настоящий детектив"
© Сериал "Настоящий детектив"

Привет! Меня зовут Алексей, я работаю в команде Антиспама Почты Mail.ru, и сегодня хочу поделиться интересным опытом нашей команды по поиску проблем на бою. 

Читать полностью »

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

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

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

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

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

Сложно было определить, какой объём мы можем рендерить без сбоев. Это зависело не только от сложности геометрии. Одна и та же геометрия могла рендериться с простыми шейдерами, но давать сбой со сложными.
Читать полностью »

image

Представьте, каково это — найти серьёзный баг в продакшене сразу после выпуска игры. Представьте, что этот баг вредит только платным пользователям. Представьте, что игра зависает сразу после того, как игроки завершают внутриигровую покупку. Представьте, что когда игрок перезапускает игру, она зависает при запуске. Представьте, что игроку так и не удаётся запустить игру и приходится её удалять. Представьте, что ваше приложение в этот момент находится в рекомендованных Apple Store. Эта статья — рассказ о таком баге, худшем из всех, что я видел за тридцать лет программирования. Это история о том, как мы его выявили и совместно с разработчиками Unity работали над его устранением.
Читать полностью »

Преамбула

Изначально вторая главазадумывалась только, как шпаргалка по работе из оперативной памяти, но делать и разбираться в этом не очень трудно. Основная "запара" может настигнуть несведущего именно при работе с прерываниями. Собсна, решено объединить.

Стек:

  • Отладочная плата LDM-HELPER-K1986BE1QI-FULL;

  • МК K1986BE1QI(но все паки и тд. юзаю 1986ВЕ1Т ибо те же яйца, только с боку даже даташит 1 на целую линейку);

  • Программатор ARM-USB-OCD-H;

  • IDE Keil uVison 5;

  • Open OCD.

Читать полностью »
Как я винду по-реверсерски чинил - 1

Ваша винда не работает как хотелось бы? Все советы из поисковика перепробовали установили Linux, а оно всё равно не работает? Вы реверс-инженер или кто вообще, ну в самом деле!? Применим свои навыки владения отладчиком, поможем Шиндовс нормально (по мере её сил) работать!

На написание данной статьи меня подтолкнула злость. Злость на поделие от индусских говноЧитать полностью »

До текущего момента, отладка С кода для ZX Spectrum была возможна только в некоторых эмуляторах. В предыдущей статье описан процесс написания отладчика, который использовал цепочку gdb-клиент (z88dk) <-> gdb-протокол <-> gdbserver (эмулятор Fuse).

Читать полностью »

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


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

Первая часть: знакомство с отладчиком
Вторая часть: узнаём значение переменной без console.log


Стек вызовов

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

Как откроете приложение, добавьте несколько своих задач в список дел. Затем удалите первую в списке задачу. Кнопка Delete. Пока всё работает. Теперь удалите последнюю в списке задачу. Опачки!Читать полностью »

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

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


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js