Текущие методы отладки Ядра Linux

Следующие компиляции кода и это протестировали OK.

create or replace function subtree (bigint)
returns setof example as $
declare
    results record;
    entry   record;
    recs    record;
begin
    select into results * from example where parent = $1;
    if found then
        for entry in select child from example where parent = $1 and child  parent loop
            for recs in select * from subtree(entry.child) loop
                return next recs;
            end loop;
        end loop;
    end if;
    return next results;
end;
$ language 'plpgsql';

условие "дочерний <> родитель" необходим в моем случае, потому что узлы указывают себе.

Весело проводят время :)

21
задан ctinnist 19 November 2009 в 16:41
поделиться

3 ответа

SystemTap кажется Linux тем, что Dtrace предназначен для Solaris .. однако я считаю его довольно враждебным в использовании. Тем не менее, вы можете попробовать. NB: скомпилируйте ядро ​​с отладочной информацией и потратьте некоторое время на перехватчики инструментария ядра.

Вот почему многие все еще используют printk () после эмпирического сужения ошибки до определенного модуля.

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

однако я считаю его довольно враждебным в использовании. Тем не менее, вы можете попробовать. NB: скомпилируйте ядро ​​с отладочной информацией и потратьте некоторое время на перехватчики инструментария ядра.

Вот почему многие до сих пор используют printk () после эмпирического сужения ошибки до определенного модуля.

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

однако я считаю его довольно враждебным в использовании. Тем не менее, вы можете попробовать. NB: скомпилируйте ядро ​​с отладочной информацией и потратьте некоторое время на перехватчики инструментария ядра.

Вот почему многие до сих пор используют printk () после эмпирического сужения ошибки до определенного модуля.

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

6
ответ дан 29 November 2019 в 22:03
поделиться

Существует множество разнообразных методов в зависимости от типа проблем, которые вы хотите отладить. В вашем случае первый вопрос: действительно ли система заморожена? Вы можете включить волшебный ключ sysrq и проверить состояние системы в момент зависания и перейти оттуда.

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

2
ответ дан 29 November 2019 в 22:03
поделиться

Если вы можете воспроизвести проблему внутри виртуальной машины, существует довольно новая (AFAIK) техника, которая может оказаться полезной: отладка виртуальной машины с хост-машины, на которой она работает.

Смотрите, например, это: Отладка ядра Linux в VMWare с хоста Windows

VMware Workstation 7 также позволяет использовать мощную технику, которая позволяет детерминированно записывать выполнение системы и затем воспроизводить его по желанию, даже в обратном порядке. Таким образом, как только система падает, вы можете вернуться назад и посмотреть, что происходило в тот момент (и даже попробовать что-то изменить и посмотреть, не произойдет ли сбой). IIRC я где-то читал, что вы не можете делать это и одновременно отлаживать ядро с помощью VMware/gdb.

Очевидно, что для этого вам нужен VMM. Я не знаю, какие VMM, кроме семейства VMM от VMware, поддерживают это, и я не знаю, поддерживают ли это какие-либо бесплатные версии VMware. Скорее всего, нет; нельзя ожидать, что коммерческая компания будет предоставлять все бесплатно. Пробная версия работает 30 дней.

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

7
ответ дан 29 November 2019 в 22:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: