[make-initrd] Инфраструктура отладки в make-initrd

Leonid Krivoshein klark.devel at gmail.com
Thu Jul 1 16:50:21 MSK 2021



01.07.2021 16:39, Alexey Gladkov пишет:
> On Thu, Jul 01, 2021 at 03:31:07PM +0300, Leonid Krivoshein wrote:
>> Всем привет!
>>
>>
>> Из-за скудности сабжа пришлось городить свой набор функций и в процессе
>> отладки они сильно выручили. С включенным bc_debug получаются вменяемые
>> отладочные журналы, не сравнить с использованием set -x. Примеры сейчас
>> можно увидеть здесь:
>> http://git.altlinux.org/people/klark/packages/make-initrd-bootchain.git в
>> подкаталоге boot-logs.
>>
>> В самом make-initrd на эту тему есть немного, например, параметр debug, от
>> которого мало что меняется в run-time, а раньше он ещё и был включен по
>> дефолту (я не знал, как отключить, поэтому ввёл свой bc_debug). Было бы
>> здорово иметь такую инфраструктуру на верхнем уровне make-initrd, доступную
>> для любых фич. Речь о примерно следующем наборе функций:
>>
>> debug() -- Вывод текстового сообщения при расширенной отладке.
>> enter() -- Трассировка при расширенной отладке: вход в указанную функцию.
>> leave() -- Трассировка при расширенной отладке: выход из указанной функции.
>> run() -- Запуск внешней команды. При расширенной отладке команда попадёт в
>> журнал.
>> fdump() -- Вывод в журнал содержимого указанного файла при расширенной
>> отладке.
>> assign() -- Присвоение переменной указанного значения, попадающее в журнал.
>>
>> message() -- уже есть, он отправляет в журнал сообщение независимо от debug.
>>
>> Я понимаю, что после отладки enter()/leave() и возможно что-то ещё из кода
>> может даже лучше убирать. Но в таком виде как сейчас их наличие помогает не
>> только программисту отлаживать программу, но и пользователю разобраться,
>> почему не грузится система. Возможно имеет смысл перетащить в
>> initrd-sh-functions?
> В качестве отдельной фичи ? Если да, то в ней можно принудительно включать
> rdlog=console. Если нет, то нужно её держать в памяти.

А почему в памяти? debug() выводит в >&2 если включен debug, остальные 
функции, на нём основаны. А куда уж скрипт направит свой stderr, туда и 
будет выводиться. Зачем делать это фичей, если тут просто расширение API?


-- 
Best regards,
Leonid Krivoshein.



More information about the Make-initrd mailing list