отладчик режима ядра типа SoftIce
От: ArtSh Россия  
Дата: 30.11.04 17:50
Оценка:
Есть ли удобные методы отладки при написании драйверов в *nix. И есть ли пакеты облегчающие написание кода типа DriverStudio?
Re: отладчик режима ядра типа SoftIce
От: fAX Израиль  
Дата: 30.11.04 17:56
Оценка: +2
Здравствуйте, ArtSh, Вы писали:

AS>Есть ли удобные методы отладки при написании драйверов в *nix. И есть ли пакеты облегчающие написание кода типа DriverStudio?

Не знаю, как сейчас, но в всоё время Линус выкинул из ядра все средства отладки — чтоб знал, что пишешь! (ищи ошибку, пока глаза на лоб не вылезут; если ты не понимаешь, что написал и надеешься на отладчик... нафиг такой код!).

Про printk, думаю, ты знаешь.
...Complex problems have simple, easy-to-understand wrong answers...
(Grossman's Misquote of H.L.Mencken)
Re: отладчик режима ядра типа SoftIce
От: Murr Россия  
Дата: 30.11.04 18:55
Оценка: 12 (2)
Здравствуйте, ArtSh, Вы писали:

AS>Есть ли удобные методы отладки при написании драйверов в *nix. И есть ли пакеты облегчающие написание кода типа DriverStudio?


*nix — это что такое? В FBSD, помнится, есть встроенный ddb. В Linux есть kdb (патчем от SGI).
А для кодирования зачем специальные среди — вполне подходит старый добрый emacs.
Re: отладчик режима ядра типа SoftIce
От: raskolnikov  
Дата: 01.12.04 11:01
Оценка: 2 (1)
Здравствуйте, ArtSh, Вы писали:

AS>Есть ли удобные методы отладки при написании драйверов в *nix. И есть ли пакеты облегчающие написание кода типа DriverStudio?


Под Линухом надо соответственно
проконфигурировать ядро
Kernel hacking/Kernel debugging,Remote debugging.
Тогда можно отлаживать ядро или модули, но на 2-м компе через нулл-модем кабель.
При такои конфигурации ядро не стартует, а ждет приказов от gdb.

Стартани gdb (или DDD) из директории с Линух source,
устанави параметры сериального интерфейса:
set remotebaud 34800
и заместа загрузки бинарника, укажи
target remote /dev/ttySXX
(смотря какой сер.порт)


На одном и том же компе как в SoftIce помоему не пойдет.
Re: отладчик режима ядра типа SoftIce
От: PVA  
Дата: 01.12.04 13:56
Оценка: 2 (1)
Здравствуйте, ArtSh, Вы писали:

AS>Есть ли удобные методы отладки при написании драйверов в *nix. И есть ли пакеты облегчающие написание кода типа DriverStudio?


Облегчающие не знаю, а для отладки есть "копия" SI — LinIce (последняя — 2.0) — сслыка на wasm.ru
newbie
Re: отладчик режима ядра типа SoftIce
От: SlothMind  
Дата: 01.12.04 16:45
Оценка: +1
Здравствуйте, ArtSh, Вы писали:

AS>Есть ли удобные методы отладки при написании драйверов в *nix. И есть ли пакеты облегчающие написание кода типа DriverStudio?

может, будет полезно
Re[2]: отладчик режима ядра типа SoftIce
От: ArtSh Россия  
Дата: 01.12.04 18:20
Оценка:
Здравствуйте, Murr, Вы писали:

M>*nix — это что такое? В FBSD, помнится, есть встроенный ddb. В Linux есть kdb (патчем от SGI).

Ну скажу я Вам, что интересует меня SuSE Linux 9.1, и что, Вы мне сразу ссылку на DriverStudio портированную под Linux сразу дадите?

M>А для кодирования зачем специальные среди — вполне подходит старый добрый emacs.

Использование удобных утилит, облегчающих отладку и написание программ никому не повредит. Берегите свое время.
Re[3]: отладчик режима ядра типа SoftIce
От: Murr Россия  
Дата: 01.12.04 19:33
Оценка:
Здравствуйте, ArtSh, Вы писали:

AS>Ну скажу я Вам, что интересует меня SuSE Linux 9.1, и что, Вы мне сразу ссылку на DriverStudio портированную под Linux сразу дадите?


При чем тут Driver Studio?
Если я вам бы сказал только ddb(для FreeBSD), а вы пользовались Linux, то какую вообще пользу вам бы принесло?

AS>Использование удобных утилит, облегчающих отладку и написание программ никому не повредит. Берегите свое время.


Про отладку согласен. А чем кодирование для kernel отличается от кодирования для user-space?
Набор шаблонов для драйверов? Так он может быть полезен разве что вы по 10 драйверов в день пишете.
Вообще, концепция шаблона абсолютно абсурдна.
Re[2]: отладчик режима ядра типа SoftIce
От: Murr Россия  
Дата: 01.12.04 19:34
Оценка:
Здравствуйте, SlothMind, Вы писали:

SM>Здравствуйте, ArtSh, Вы писали:


AS>>Есть ли удобные методы отладки при написании драйверов в *nix. И есть ли пакеты облегчающие написание кода типа DriverStudio?

SM>может, будет полезно

Согласен. При определенных условиях — наилучшее решение.
Re[4]: отладчик режима ядра типа SoftIce
От: ArtSh Россия  
Дата: 02.12.04 10:28
Оценка:
Здравствуйте, Murr, Вы писали:

M>При чем тут Driver Studio?

при том, что с ее помощью можно написать работающий драйвер за 5 минут. Если идет процесс разработки устройства то это очень удобно.

M>Если я вам бы сказал только ddb(для FreeBSD), а вы пользовались Linux, то какую вообще пользу вам бы принесло?

А если мне завтра понадобиться писать под FreeBSD?
Re[2]: отладчик режима ядра типа SoftIce
От: ArtSh Россия  
Дата: 02.12.04 10:32
Оценка:
Здравствуйте, SlothMind, Вы писали:

SM>может, будет полезно

Некоторое время тормозил, что UML — User Mode Linux. А вообще несколько не понятно, чем лучше vmware?
Re[3]: отладчик режима ядра типа SoftIce
От: Murr Россия  
Дата: 02.12.04 12:18
Оценка:
Здравствуйте, ArtSh, Вы писали:

AS>Здравствуйте, SlothMind, Вы писали:


SM>>может, будет полезно


AS>Некоторое время тормозил, что UML — User Mode Linux. А вообще несколько не понятно, чем лучше vmware?


В контексте твоего вопроса — тем что UML можно отлаживать gdb.
Re[5]: отладчик режима ядра типа SoftIce
От: Murr Россия  
Дата: 02.12.04 12:27
Оценка:
Здравствуйте, ArtSh, Вы писали:

AS>при том, что с ее помощью можно написать работающий драйвер за 5 минут.


Ну так расскажите, что там полезного есть. Просветите, так сказать.
Я в свою очередь могу попытаться просветить, чем можно для этого воспользоваться в Linux.

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

AS>А если мне завтра понадобиться писать под FreeBSD?


Тогда придешь завтра в форум и спросите для FreeBSD.
Или ты считаешь, что кодированием драйверов для FreeBSD имеет что-то общее с кодированием драйверов для Linux (думаю не больше, чем общее между кодированием драйверов для Win и для Lin)?

Если ты едешь в Зимбабве и хочешь узнать правила пребывания там, то
я ты же не приходишь в форум и не спрашиваешь "какие правила пребывания в *ве?".
Re: отладчик режима ядра типа SoftIce
От: postmaster  
Дата: 02.12.04 13:40
Оценка:
Здравствуйте, ArtSh, Вы писали:

AS>И есть ли пакеты облегчающие написание кода типа DriverStudio?


http://www.jungo.com/kerneldriver_linux.html
Re[6]: отладчик режима ядра типа SoftIce
От: ArtSh Россия  
Дата: 02.12.04 17:44
Оценка:
Здравствуйте, Murr, Вы писали:

M>Ну так расскажите, что там полезного есть. Просветите, так сказать.

M>Я в свою очередь могу попытаться просветить, чем можно для этого воспользоваться в Linux.

1. BoundsChecker проверяет выделение памяти
2. TrueTime профайлер.
3. SoftIce отладчик.
4. TrueCoverage тоже что-то профайлера + анализатор вызовов и зависимостей функций
также возможность удаленной отладки (COM, Ethernet) + удобная оболочка позволяющая устанавливать драйвера, просматривать отчеты выше перечисленных средств(а также некоторый других средств сторонних разработчиков) и отладочную информацию и конечно же простой в использовании набор шаблонов. (все таки зря Вы так пренебрежительно относитесь к шаблонам. Сходу написать код который работает и не вешает систему непросто, особенно когда нужно достаточно часто его изменять или переписывать заново)


M>Я тебе уже честно сказал, что не вижу, чем кодирование для userspace отличается от кодирования для kernelspace. Ну разве что кроме бестолковых шаблонов, которые могут быть полезны только совсем зеленым новичкам или людям, которые по десять драйверов в день пишут.


отлаживать тяжелее и последствия более тяжелые. К томуже наверное идеология другая. Я, как можно понять по вопросу, в основном программировал под Win и под Lin начал писать недавно, и действительно вижу, что пока идеология не слишком сильно отличается от usermode. Но, по моему, так же можно сказать что и dll никак не отличается от драйвера.

M>Тогда придешь завтра в форум и спросите для FreeBSD.

M>Или ты считаешь, что кодированием драйверов для FreeBSD имеет что-то общее с кодированием драйверов для Linux (думаю не больше, чем общее между кодированием драйверов для Win и для Lin)?

А что, они настолько отличаются?

M>Если ты едешь в Зимбабве и хочешь узнать правила пребывания там, то

M>я ты же не приходишь в форум и не спрашиваешь "какие правила пребывания в *ве?".

однако если я еду в страны ЕС, то так и скажу, хотя страны разные.
Re[7]: отладчик режима ядра типа SoftIce
От: Murr Россия  
Дата: 03.12.04 13:10
Оценка:
Здравствуйте, ArtSh, Вы писали:

AS>1. BoundsChecker проверяет выделение памяти


Linux kernel можно собрать некоторым количеством кода, который поможет выловить некорректные обращения к памяти и использование stale указателей. Естественно, подобные вещи автоматически выловить можно не всегда.

Например, CONFIG_DEBUG_SLAB, CONFIG_DEBUG_PAGEALLOC.

AS>2. TrueTime профайлер.


Есть такая штука, как OProfile. У нас вообще свой профилировшик.
Есть еще kprobes, на основе которых тоже можно собирать информацию.

AS>3. SoftIce отладчик.


Ну тут уже упоминали kdb, gdb+UML.

AS>4. TrueCoverage тоже что-то профайлера + анализатор вызовов и зависимостей функций


AS>также возможность удаленной отладки (COM, Ethernet)


Kernel собрать с поддержкой serial консоли, тогда к kdb можно достучаться через minicom.

>удобная оболочка позволяющая устанавливать драйвера


В GNU/Linux драйверы не устанавливаются в том смысле, в котором устанавливаются в Windows.
В Linux драйверы можно загружать только из user-space, ядро этим не занимается.
Занимаются этим утилиты под названием modutils (modprobe,insmod,rmmod), у них есть база
модулей (modules.dep) и конфигурационный файл(modules.conf или modprobe.conf), в котором прописаны опции (параметры, которые можно передать из userspace) модулям. Если нужно встроить драйвер в загрузку GNU/Linux, то он прописывается в автозагрузку (обычно, init scripts, но для некоторых дистрибутивов, как Debian, можно и по-другому), как и любая другая программа.

В ядре есть ряд триггеров, которые вызывают загрузку модулей — фактически, запуск процесса modprobe.

>просматривать отчеты выше перечисленных средств(а также некоторый других средств сторонних разработчиков) и

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

На sourceforge есть утилиты для Oprofile, которые позволяют просматривать соотв, информацию.
А что до шаблонов — я никогда не слышал, чтобы такой набор существовал. Вероятно, его можно наковырять из каких-нибудь книжек по ядру. Но, честно скажу, не могу понять, как это может ускорить процесс разработки, когда шапка пишется 5 минут, а разработка длится месяц (в моем случае — 3 года). Зачем регулярно переписывать код с нуля?

AS>отлаживать тяжелее и последствия более тяжелые. К томуже наверное идеология другая. Я, как можно понять по >вопросу, в основном программировал под Win и под Lin начал писать недавно, и действительно вижу, что пока

>идеология не слишком сильно отличается от usermode. Но, по моему, так же можно сказать что и dll никак не
>отличается от драйвера.

А разве отличается?
Большинство различий — концептуальные, а не в организации кодирования (подсветка синтаксиса, удобный code browsing, удобный tag browsing, удобные средства редактирования, etc).

AS>А что, они настолько отличаются?


Ну я ж говорю. Оцени разницу между WinNT и Linux и представь, что такая же — между Linux и FreeBSD.
Есть, конечно, ряд вещей, которые изнутри сближают FreeBSD с Linux, но есть и ряд вещей, которые идеологически сближают Linux с WinNT. Ну тут можно много говорить.

AS>однако если я еду в страны ЕС, то так и скажу, хотя страны разные.


Дык, в том то и дело, что Linux и FreeBSD изнутри достаточно различно устроены.
Их схожесть обуславливается совместимыми интерфейсами системных библиотек (libc, POSIX threads, etc) и в малой степени — внутренним устройством.
Re: отладчик режима ядра типа SoftIce
От: Dikij_Penguin  
Дата: 03.12.04 14:05
Оценка:
Здравствуйте, ArtSh, Вы писали:

AS>Есть ли удобные методы отладки при написании драйверов в *nix. И есть ли пакеты облегчающие написание кода типа DriverStudio?


GDB
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re[8]: отладчик режима ядра типа SoftIce
От: ArtSh Россия  
Дата: 03.12.04 18:31
Оценка:
Становиться грустно что все это так разрозненно.
Re[9]: отладчик режима ядра типа SoftIce
От: Murr Россия  
Дата: 03.12.04 18:54
Оценка:
Здравствуйте, ArtSh, Вы писали:

AS>Становиться грустно что все это так разрозненно.


Почему разрозненно? Это все части ядра либо патчи к ядру + несколько утилит, которые можно скачать.
Чем лучше всё сваленное в одну кучу?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.