LINUX.ORG.RU

Отладчик не нужен ?

 , ,


0

0

Встроенный отладчик ядра является на текущий момент одним из самых спорных вопросов. Kgdb никогда не было в основной ветке. Торвальдс прохладно относится к идее задебажить ядро и до сих пор не включал его. Но времена меняются, и, возможно, в 2.6.26 он и появится.
Еще в 2000 г. Линус сказал примерно следующее: "я надеюсь, что отсутствие отладчика заставит разработчиков искать решение проблемы на качественно ином уровне." Но недавно он дал понять, что если отладчика нет в основной ветке, то и как бы не о чем и говорить, что подтолкнуло Ingo Molnar, который выпустил очередной патч для этого отладчика. Среди разработчиков ядра усиливается тенденция к включению kgdb в основную ветку.
На данный момент имеется версия т.н. удаленного gdb, который успешно апробирован на трех различных платформах. Молнаровские патчи для kgdb затрагивают код более чем в 20 файлах ядра, и в основном они затрагивают низкоуровневый код драйверов. Переработана поддержка kgdb из консоли, убраны сомнительные хаки по получению из ядра символьной информации.

>>> Подробности

Ответ на: комментарий от AVL2

>Они их или придумали или взяли из английского

Ну разве что "архитекторов" но это скорее из греческого и "дизайнеров"

ЗЫ: Ща начальник течрайтерского отдела из магазина вернётся попытаюсь выпытать "список используемых терминов" ;)

sS ★★★★★
()
Ответ на: комментарий от AVL2

>При этом работоспособность кода может быть подтверждена только прохождением всего графа состояний кода через отладчик, то есть, это нереальная процедура. Значит код, если это не полнейший hello world, всегда будет не отлаженный до конца.

>В противовес данной схеме, можно писать и затем рассматривать код на уровне алгоритма, а затем, на уровне исходного кода. Отладчик в этом случае бывает необходим только в 0,000001% случаев, для ловли ошибок не в коде, а в компиляторе...

;)))

Для этого описание кода сначало нужно написать на языке формальных спецификаций после чего _возможно_ автоматический кодогенератор чего из него и сгенерирует (не факт что работоспособное) ;) На бумаге оно выглядит красиво а как на деле - поинтересуйтесь у тех кто этим занят. Кстати на эту тему ИСПРАН-овские ребяты как раз собираются RMS-у лекцию прочитать ;)

hint: как вы думаете зачем в MOSIX-овском патче к ядру заодно и дебаггер идёт ? ;) Эт вам не Hello World ;)

Реальный мир он такой ;)

sS ★★★★★
()
Ответ на: комментарий от AVL2

> При этом работоспособность кода может быть подтверждена только прохождением всего графа состояний кода через отладчик

Не надо утрировать. Если кто-то пишет некую последовательность непонятных символов, а потом пытается её "отдебажить" - это проблемы неправильно используемого отладчика, а не самого отладчика.

> Отладчик в этом случае бывает необходим только в 0,000001% случаев

Это утверждение основывается на придположении что все используемые библиотеки безошибочны, документация безошибочна, ядро безошибочно. Библиотеки установлены корректно, пути прописаны правильно и т.д. Если вы программируйте сферического коня в вакууме может так и стоит делать, а реальности отладчик очень даже пригодится.

anonymous
()
Ответ на: комментарий от sS

>Для этого описание кода сначало нужно написать на языке формальных спецификаций после чего _возможно_ автоматический кодогенератор чего из него и сгенерирует (не факт что работоспособное) ;) На бумаге оно выглядит красиво а как на деле - поинтересуйтесь у тех кто этим занят.

Это одна из технологий, типа uml. И предназначена только для того, чобы абстрагироваться от конкретного языка программирования. а поскольку языков много и все они специфичны, вылезают соответствующие проблемы. Если такой задачи не стоит, то исходный код программы вполне можно рассматривать, как программу на языке формальных спецификаций без необходимости последующей кодогенерации. Тоже не совсем удобно, поскольку в ней присутствует куча лишней по отношению к алгоритму информации, но вполне покатит...

>hint: как вы думаете зачем в MOSIX-овском патче к ядру заодно и дебаггер идёт ? ;) Эт вам не Hello World ;)

ниасилили?

>Реальный мир он такой ;)

В реальном мире я сам за день до сдачи включаю индус-моде, хватаю отладчик и закрываю баги в ппроекте такими конструкциями, что потом сам не понимаю, как оно работает... ;)

AVL2 ★★★★★
()
Ответ на: комментарий от anonymous

>это проблемы неправильно используемого отладчика, а не самого отладчика.

В Макдональдсе не продают даже пиво не потому, что пиво, это плохо, а потому, что люди с пивом сидят горазждо дольше, чем с пепси.

Когда есть отладчик, программер, в силу природной лени, вместо чтения и продумывания надежного исходного кода, спихивает все это на отладку.

Уж сколько проектов сделано, всегда одно и тоже...

>Это утверждение основывается на придположении что все используемые библиотеки безошибочны, документация безошибочна, ядро безошибочно.

Ошибки есть везде. Но процент использования отладчика в таких случаях стремиться к нулю...

AVL2 ★★★★★
()
Ответ на: комментарий от AVL2

> чобы абстрагироваться от конкретного языка программирования. а поскольку языков много и все они специфичны,

Какая разница во что ты будешь конвертить код если его будет читать только компилятор (в лучшем случае)? Всё это ограничено наличием соответствующего кодогенератора.

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

Эт как ? ;)

Я еще понимаю создать и прогнать тестовую последовательность на существующем коде.

>ниасилили?

Вселенная столько не живёт сколько состояний у MOSIX машины ;) А чтобы поймать _некоторые_ её состояния вполне оно.

sS ★★★★★
()
Ответ на: комментарий от AVL2

>Отладчик, это центральный элемент технологии индус-кодинга.

Индусы в технологических аспектах давно обошли русских по всем статьям. Почитай про рекламации к продукции Росийского ВПК.

Absurd ★★★
()
Ответ на: комментарий от Absurd

>Почитай про рекламации к продукции Росийского ВПК.

ЖЖешь ;)))

sS ★★★★★
()
Ответ на: комментарий от Absurd

Мне достаточно потрохов автокада и интерфейса к flow3d.

Писец, что творится...

AVL2 ★★★★★
()
Ответ на: комментарий от sS

>Какая разница во что ты будешь конвертить код если его будет читать только компилятор (в лучшем случае)? Всё это ограничено наличием соответствующего кодогенератора.

Ой нет. Для этого нужно, чтобы разные кодогенераторы _полностью_ и _оптимально_ реализовали некую абстрактную виртуальную машину состояний и функций, а это вряд ли вообще достижимо. То есть, делают, но в основном выходит дотнет и ява... ;)

>Эт как ? ;)

Да вот так. Читаем код, определяем граничные условия и далее выполняем его на виртуальной машине, на полном множестве входных данных. Если машина не сваливается в запрещеные состояния и выходные данные находятся в пределах граничных условий - порядок.

>Я еще понимаю создать и прогнать тестовую последовательность на существующем коде.

Э нет. Это подход от индус-кода. Создать ограниченый набор входных данных и прогнать на тестовой машине с проверкой выходных данных.

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

AVL2 ★★★★★
()
Ответ на: комментарий от sS

>Вселенная столько не живёт сколько состояний у MOSIX машины ;) А чтобы поймать _некоторые_ её состояния вполне оно.

Вот так и живем. Чуть шаг и ты уже в шахте лифта только потому, что лифтер шаг с левой ноги в отладчике не прогнал...

AVL2 ★★★★★
()

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

anonymous
()
Ответ на: комментарий от AVL2

> У нас программист и картриджи заправляет и серверы поднимает и программы пишет и настройки 1с правит и в ворде работает...

> Так что заимствовать еще можно очень много чего...

В данном случае заимствовать нужно мозги.

mutronix ★★★★
()
Ответ на: комментарий от mutronix

> В данном случае заимствовать нужно мозги.

Откуда? Еще классик какой-то сказал: беда России ДУРАКИ и дороги.

Разве что китайцев побольше импортировать в страну дураков.

anonymous
()
Ответ на: комментарий от AVL2

>>Я еще понимаю создать и прогнать тестовую последовательность на существующем коде.

>В идеале все эти подходы, включая вариант с отладчиком, сходятся на прогоне всех состояний программы,

У программы вообще не должно быть состояний. Луговский убедительно доказал это мне. Теперь в c++ у меня все const, а в java - final & immutable. Переменные и циклы - для быдла. Жаль не пишу на Лиспе.

Absurd ★★★
()
Ответ на: комментарий от AVL2

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

sS ★★★★★
()
Ответ на: комментарий от sS

>>У программы вообще не должно быть состояний

>o_O

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

Absurd ★★★
()
Ответ на: комментарий от anonymous

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

AVL2 ★★★★★
()
Ответ на: комментарий от anonymous

Друг в душе индус? Тогда я счастлив...

AVL2 ★★★★★
()
Ответ на: комментарий от mutronix

речь идет о том, что разные профессии называют одним словом, а не в том, что программист занимается не своим делом...

AVL2 ★★★★★
()
Ответ на: комментарий от balodja

Второе и третье - новояз. О чем так сокрушаются поборники русской словесности.

AVL2 ★★★★★
()
Ответ на: комментарий от sS

Отличие, в некотором роде, технологическое, но принципиальное.

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

Все, что нам надо, это некоторый набор правильных входных данных. Все остальное делает виртуальная машина, которая "прощелкивает" все состояния, находит лишний, неиспользуемый код, неисправный код и т.д. Эту проверку делает машина. Это то, что в самом дальнем приближении делает fxcop или даже valgrind.

в то время как тест подразумевает совокупность входных данных и правильных результатов. И это большая работа человека. Это дополнительный код тестов в программе. Это то, что делается в рамках XP, это, грубо говоря, nDoc..

По идее, нужны обе проверки. Они друг другу не противоречат.

AVL2 ★★★★★
()
Ответ на: комментарий от anonymous

>линакс

>лайнакс

К логопеду, быдло!

anonymous
()
Ответ на: комментарий от sS

>>все равно ничего близкого к softice не разработают.

>Он _давно_ уже есть, не знал ? ;) Называется LinIce

Спасибо, все, оказывается, не так плохо как я думал. Однако, в super-vga он не работает, как и ожидалось. И это не из-за лени автора, а потому что это проблема требует очень высокой квалификации и больших трудозатрат. Первое у автора, возможно, есть, а второе ему не решить никогда судя по активности разработки.

>>А исправление ядра под отладчик - лишнее доказательство их некомпетентности.

>Вашей ? ;)

Я ядро винды не пересобираю (ибо это невозможно ;) ), когда мне надо решить подобные системные задачи. Все решается тонкими ассемблерными трюками. Главное, что бы 2 программы не перехватили ядро в одном и том же месте ;)

halyavin
()
Ответ на: комментарий от Absurd

> У программы вообще не должно быть состояний. Луговский убедительно доказал это мне...

А в вместо javascript и PHP -- XSLT -- на обеих сторонах...

Loh ★★
()
Ответ на: комментарий от Loh

>> У программы вообще не должно быть состояний. Луговский убедительно доказал это мне...

>А в вместо javascript и PHP -- XSLT -- на обеих сторонах...

Да - быдлокодерские php и javascript - в биореактор. Сайтовые энджины должны транслировать вектор запроса от пользователя в вектор отклика от сайта с помошью чистых математических функций без побочных эффектов. Только так. Долой индокод.

Absurd ★★★
()
Ответ на: комментарий от halyavin

>Однако, в super-vga он не работает, как и ожидалось.

LOL ;))))

Ну поставь RR0D раз это единственное что тебе мешает жить ;)

>Главное, что бы 2 программы не перехватили ядро в одном и том же месте ;)

Как всё однако запущено ;)

sS ★★★★★
()
Ответ на: комментарий от Absurd

>> У программы вообще не должно быть состояний. Луговский убедительно доказал это мне...

Заставь дурака б-гу молиться, весь лоб расшибёт. Детко, у окружающих тебя сущностей таки есть состояния. И у тебя тоже. Или хочешь сказать, что для того, чтобы выучить что-то новое, ты создаёшь копию себя, а старого себя убиваешь, разрезаешь на части, сжигаешь, а пепел растворяешь в кислоте? Поэтому и императивная, и декларативная парадикмы достойны существования, надо лишь уметь для каждой задачи выбрать наиболее подоходящую, а не грести всё под одну гребёнку, абсурдный ты быдла кусок. Да, профессор пожелал бы тебе околеть в корчах, чего и я желаю.

anonymous
()
Ответ на: комментарий от sS

> почему кусок _кода_ во втором случае волшеным образом превратился в _спецификацию_ ...

А ведь ты дебил, однако. Сейчас бить буду. ;) Пойми: спецификация по сути и есть программа, только на некотором высокоуровневом языке. Тебе остаётся только научить ЭВМ этому языку. Как модно сейчас говорить, создать свой DSL. Ну а для создания DSL ничего пока не придумали лучше лиспа. А генерацию жавы из uml, о который ты тут бредил, оставь обезьянкам.

anonymous
()
Ответ на: комментарий от anonymous

Мудило, иди расскажи это людям из ИСП РАН

Про lisp как DSL даже не смешно.

sS ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.