Журнал LinuxFormat - перейти на главную

LXF106:Review3

Материал из Linuxformat
Перейти к: навигация, поиск

UndoDB 2.2

Грэм Моррисон обнаружил, что с UndoDB он, наконец, сможет разобраться, как работает его собственный запутанный и нелогичный код – да вот, хоть Brain Party отладить…


Мы уже встречались с UndoDB 2.0 в прошлом году – в LXF95. Версия 2.2 обещает значительный прирост скорости, а также возможность присоединения отладчика к запущенному процессу. UndoDB всегда был «копушей», что совсем неудивительно. Ведь это сродни алхимии: часы выполнения программы поворачиваются вспять.

Отладка программ весьма обременительна для системы – процессор обрабатывает дополнительный код, привязанный к исполняемой программе, а тут еще отладчик цепляется за каждую строку, словно репейник. Запуск графического приложения в GDB, отладчике, которым пользуется большинство разработ- чиков открытого ПО, снижает скорость работы программы примерно в два раза. С UndoDB 2.0 то же графическое приложение показало лишь 40 % обычной производительности.

Причина столь значительного различия – рабочая нагрузка. UndoDB делает значительно больше, чем обычный отладчик. Допустим, переменная number, равная 123 в строке 7, превращается в 321 в строке 12. При трассировке с помощью GDB мы не сможем вытащить ее старое значение без перезапуска отлаживаемой программы – это улица с односторонним движением, а потому некоторые ошибки бывает очень трудно обнаружить. С помощью UndoDB, программу можно пройти в любом направлении и проследить все изменения так, словно они происходят во время линейного выполнения. Это возможно потому, что отладчик сохраняет снимки состояния программы на каждом шаге, а это серьезная нагрузка на систему. Но результат того стоит, так как без этой способности на исправление некоторых ошибок можно потратить полжизни.

Speed++

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

По мере роста ресурсоемкости преимущество UndoDB 2.2 становились все более заметным. Мы попробовали XFractInt, простую интерактивную фрактальную программу для X Window. В UndoDB 2.0 она едва шевелилась. Рендеринг фрактального рисунка занимал около 11 секунд, а об интерактивности можно было забыть. Загрузка процессора делала мышь почти бесполезной, и хотя с точки зрения отладки все прошло безупречно, тест программы фактически стал тестом нашего терпения. С новой версией все было совсем иначе. Рендеринг того же фрактала занимал всего секунду, а интерактивность не прерывалась на протяжении всего теста. Проблемы возникали лишь при операциях с границами окна. В остальном UndoDB 2.2 была почти вдесятеро быстрее предшественницы.

Программа работает все еще медленнее GDB, но разницу заметить уже гораздо труднее. Поэтому UndoDB теперь можно рекомендовать для отладки графических программ, а если вы когда-то отказались от него из-за медлительности – имеет смысл вернуться и попробовать еще раз. Над этой программой всегда висела проблема выбора между уникальными способностями к отладке и беспримерной ресурсоемкостью. С новой версией этот выбор уже не столь мучителен. LXF

Персональные инструменты
купить
подписаться
Яндекс.Метрика