Довольно часто разработчики ядер под Android устройства сталкиваются с тем, что собранное из исходников ядро просто напросто не работает. И при этом часто разработчик, собравший ядро, не имеет никаких специальных средств для отладки. В данной ситуации без kmsg логов довольно трудно что либо сделать. Конечно же в Linux ядре уже имеется несколько способов копирования содержимого kmsg буфера в специальную область памяти, но если вам интересно узнать ещё об одном способе, то прошу под кат.
Читать полностью »
Рубрика «C» - 77
Как отлаживать Android ядро без UART, JTAG и прочих
2016-09-28 в 19:05, admin, рубрики: android, C, debug, jtag, kmsg, last_kmsg, linux, LLCON, Qualcomm, uart, Разработка под android, Разработка под Linux, системное программированиеЗаменяем бут-анимацию Android устройства на мелькающие логи Linux ядра
2016-09-24 в 17:57, admin, рубрики: android, C, console, dmesg, framebuffer, kmsg, linux, LLCON, Разработка под android, Разработка под Linux, системное программированиеПосле разработки кастомного загрузчика для своего телефона мне захотелось реализовать вывод ядерных логов на дисплей, как это умеют делать десктопные дистрибутивы Linux. А всё потому, что лично мне при загрузке телефона намного интереснее наблюдать мелькающие kmsg логи, нежели наблюдать сначала логотип загрузчика, а затем ещё и бут-анимацию Android системы. За два года «скучные обоины» уже приелись.
Сейчас попытаюсь вкратце рассказать о модуле LLCON для Android ядра, который реализует низкоуровневый вывод kmsg логов на дисплей.
Читать полностью »
Моим самым важным проектом был интерпретатор байт-кода (или «как увидеть матрицу»)
2016-09-23 в 8:38, admin, рубрики: C, c++, ассемблер, байт-код, виртуальная машины, карьера, машинный код, ненормальное программирование, обучение, Программирование, системное программирование, стековая машина, метки: виртуальная машины
В форумах я часто вижу вопросы от начинающий программистов на С++: «какую посоветуете литературу?». Обычно я отвечаю набором надежных книг с дополнением: никакое количество прочитанных книг не заменит практику. Нужно на самом деле делать что-то. Но что? Что может быть хорошим проектом? Нужно что-то, что научит многому, но при этом достаточно простое и интересное, чтобы не заскучать. Я недавно задумался над этим вопросом, и, кажется, нашел ответ. Вам несомненно стоит написать интерпретатор байт-кода. Для меня такой проект оказал решающее значение в становлении всей последующей карьеры.
Как все началось
В 200Х году я учился на втором курсе в университете. У меня уже был небольшой опыт в программировании. Я умел использовать абстракции, доступные в С++, я не понимал на самом деле как все работает. Для меня компилятор и операционная система были просто черными коробками, работающими благодаря магическим заклинаниям, и я в целом считал это приемлемым.Читать полностью »
Примеры реальных патчей в PostgreSQL: часть 2 из N
2016-09-20 в 14:45, admin, рубрики: C, open source, postgresql, базы данных, Блог компании Postgres Professional, разработка
В предыдущих статьях мы рассмотрели процесс разработки PostgreSQL, а также примеры некоторых реальных патчей, принятых в эту РСУБД за последнее время. При этом рассмотренные патчи были, прямо скажем, какие-то «несерьезные» — исправление опечаток, исправление простейших косяков, найденных при помощи статического анализа, и прочее в таком духе.
Сегодня мы рассмотрим примеры уже более серьезных патчей, устраняющих узкие места в коде, исправляющих достаточно серьезные баги, относительно крупные рефакторинги, и так далее. Как и ранее, основная цель статьи — не столько осветить изменения, принятые в PostgreSQL 9.6, сколько показать, что разработка open source проектов, в частности PostgreSQL, это интересно и не так сложно, как вам это может казаться.
Если эта тема вам интересна, прошу под кат.
Читать полностью »
Итоги GSOC
2016-09-19 в 21:42, admin, рубрики: C, kolibrin, kolibrios, open source, Блог компании KolibriOS Project Team, колибри, Программирование
30 августа закончился Google Summer of Code, в котором мы принимали участие во второй раз. В целом результат достойный — большинство студентов подтвердили, что их выбрали не зря. Но были и ошибки, о которых расскажем в этой статье. Для подведения итогов GSOC были опрошены менторы — те самые люди, на плечах которых всё и держалось последние полгода. Подробности под катом.
Читать полностью »
Программист на Марсе: Shutdown Dammit Until
2016-09-19 в 10:52, admin, рубрики: C, Блог компании Edison, марс, марсоход, отладка, Программирование, Промышленное программирование, разработка, тестирование, Тестирование IT-систем — Хьюстон, у нас проблемы.
— Нет, Марк, это у тебя проблемы.
Как спится программистам и тестировщикам марсохода за 400 миллионов долларов? Особенно если на 18 сол аппарат не вышел на связь.

Марк Адлер — американский разработчик программного обеспечения, который работает в сфере исследования космоса. Более всего он известен благодаря своей работе в области сжатия данных, являясь автором хеш-функции Adler-32, а так же как со-автор библиотеки для сжатия данных zlib и gzip. Он участвовал в разработке Info-ZIP и формата изображений Portable Network Graphics (PNG). Адлер также был ответственным за миссию марсохода «Спирит» в рамках программы «Mars Exploration Rover».
Вместе с компанией Edison (которая специализируется на разработке защитных релейных систем и приложений для моделирования опытов), расскажем вам о разработчике ПО марсохода и о том, как развивались события, когда пытались исправить ошибку софта на расстоянии 225 миллионов километров.
Читать полностью »
О фундаментальных ошибках в дизайне языков программирования
2016-09-19 в 9:32, admin, рубрики: C, c++, for, Анализ и проектирование систем, Блог компании Инфопульс Украина, ПрограммированиеКак-то раз мне на глаза попалась статья о том, что самой дорогой ошибкой в дизайне языков программирования было решение определять окончание строки в C по NULL-байту. Один из вариантов перевода этой статьи на Хабре: habrahabr.ru/post/126566 (хотя я, по-моему, читал другой). Эта статья меня немного удивила. Во-первых, как-будто в те времена экономии каждого бита памяти можно было шикануть и выделить ещё 2-4 байта в каждой строке на хранение её размера. Во-вторых, никаких особо катастрофических последствий это решения для программиста не несёт. Ошибок, которые можно по этому поводу совершить я могу придумать целых две: неверно выделить память для строки (забыть место под NULL) и неверно записать строку (забыть NULL). О первой ошибке уже предупреждают компиляторы, избежать второй помогает использование библиотечных функций. Всей-то беды.
Значительно большей проблемой времён дизайна языка С (и затем С++) мне кажется другое — оператор for. При всей его кажущейся безвредности — это просто кладезь потенциальных ошибок и проблем.
Давайте вспомним классическое его применение:
for (int i = 0; i < vec.size(); i++)
{...}
Что же здесь может пойти не так?
Читать полностью »
15 самых популярных языков программирования по версии GitHub
2016-09-17 в 15:25, admin, рубрики: C, C#, c++, github, java, javascript, python, swift, разработка по, рейтинг, Си, языки программирования
Разработчики программного обеспечения пользуются огромным спросом в настоящее время. В некоторых компаниях даже стажеры-программисты получают высокую зарплату. ИТ-компании борются друг с другом за талантливые кадры.
А кадры, в свою очередь борются за место под солнцем. Успех тех и других будет зависеть от того, насколько хорошо у них получается держать руку на пульсе, быть в тренде, использовать перспективные технологии и языки программирования. Чтобы понять, на что ориентироваться и в каком направлении идти, разработчики ПО и их работодатели изучают различные исследования и рейтинги популярности – будь то бизнес-модели или те же технологии и языки программирования.
Однако некоторые игроки ИТ-рынка оказались предприимчивыми и создали проекты, посвященные ранжированию и трендам. К примеру, на этой неделе GitHub опубликовал собственный рейтинг 15 самых популярных языков программирования. Конечно же, популярность определялась по количеству pull-запросов на GitHub за последний год.Читать полностью »
GDB оказался крепким орешком
2016-09-16 в 8:01, admin, рубрики: C, gdb, pvs-studio, PVS-Studio for Linux, PVS-Studio для Linux, Блог компании PVS-Studio, отладка, Отладчик, Разработка под Linux, Си
GDB — инструмент, без которого тяжело обойтись. Конечно, как говорит Брукс «Качество разработки программного продукта достигается благодаря правильному проектированию, а не бесконечному тестированию». Однако правильное проектирование не защищает от логических ошибок, опечаток, нулевых указателей и так далее. И вот здесь нам и помогают инструменты отладки кода, такие как GDB. Моя цель показать, что не менее полезными инструментами являются статические анализаторы кода, выявляющие многие ошибки на самых ранних этапах. Намного лучше, если ошибка будет исправлена в коде, ещё до этапа тестирования и отладки. Для демонстрации пользы от статического анализа кода, поищем внутри GDB ошибки с помощью анализатора PVS-Studio.
Читать полностью »
Как избежать ошибок, используя современный C++
2016-09-15 в 9:42, admin, рубрики: C, c++, c++11, C++14, c++17, modern c++, open source, pvs-studio, static code analysis, Блог компании PVS-Studio, Компиляторы, Программирование, статический анализ кода
Одной из проблем C++ является большое количество конструкций, поведение которых не определено или просто неожиданно для программиста. С такими ошибками мы часто сталкиваемся при использовании статического анализатора кода на разных проектах. Но, как известно, лучше всего находить ошибки ещё на этапе компиляции. Посмотрим, какие техники из современного C++ позволяют писать не только более простой и выразительный код, но и сделают наш код более безопасным и надёжным.
Читать полностью »
