Приложение E. Отладка

Общая информация

Отладка - это то, чему вы можете научиться. Существует огромное количество документации, описывающей как правильно составлять отчеты об ошибках. Пожалуйста, прочитайте их перед тем как приступать к действиям, ваша ошибка не убежит и не убьет вас. Мы хотим устранит ошибку и мы нуждаемся в вашей помощи, так что давайте будем подготовлены. Два отличных документа - Bugzilla Bug Reporting HOWTO и Simon Tathams How to Report Bugs Effectively.

Мы не поддерживаем неофициальные патчи, это значит вам нужно убедиться, что Fluxbox "падает" без сторонних патчей. Если патчи были наложены мейтейнер вашего дистрибутива, обращайтесь к нему.

Если вам нужно больше информации чем дано тут, попробуйте попросить помощи у людей с канала #fluxbox, сервер irc.freenode.net. Обычно там можно найти основных разработчиков и просто квалифицированных людей, они скорее всего вам смогут помочь.

Специфичные для Fluxbox вещи

Output from Fluxbox

Как и другие приложения, Fluxbox посылает все сообщения на консоль с которой он был запущен. Like any other application Fluxbox sends all messages to the console it was started from. The problem is that under normal circumstances all output goes to the text console. Change your Fluxbox start line to exec xterm or whatever your favorite terminal emulator may be. Start X11 and start Fluxbox in that xterm, and lo and behold, you can easily see all messages from Fluxbox.

Нужна нам информация

Мы хотим знать много вещей, убедитесь что вы знаете всё о них.

Что делать с core dump'ами?

Если вы получили core dump используя Fluxbox, сделайте следующее: зайдите на канал #fluxbox на OPN и скажите fluxgen'у что у вас core dump. Сообщите ему всю информацию которую он захочет узнать. Наверно он попросит вас сделать следующее. Это довольно большая работа, но всякий человек, у которого есть опыт работы в Unix, сможет сделать это. Ах да, вам понадобится отладчик GNU - gdb.

Пересборка Fluxbox

Да, вы правильно прочитали. Чтобы стать настоящим отладчиком, вам придется пересобрать Fluxbox с отладочными символами.

Соберите Fluxbox как обычно, только добавьте следующие опции когда будете делать "make":

    $ CFLAGS=-Wall -g3 CXXFLAGS=-Wall -g3 make

Если вы используете srpm с сайта Fluxbox или вашего дистрибутива, можете сделать что-то подобное:

    $ su
    # rpm -ivh fluxbox-0.1.11.1mdk.src.rpm
    # cd /usr/src/RPM/SPECS
    # env DEBUG=true rpm -ba fluxbox.spec
    # rpm -Uvh --force /usr/src/RPM/RPMS/i686/fluxbox*
    # exit
    $ mkdir -p ~/src/fluxbox
    $ cp -R /usr/src/RPM/BUILD/fluxbox* ~/src/fluxbox

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

    $ ulimit -c unlimited

Запустим X11 и начнем отладку. Делайте то, что привело к ошибке. А теперь приступим к собственно отладке:

    $ gdb fluxbox core

И наберите следующую команду в gdb (первая часть это строка приглашения gdb, это набирать не надо :)):

    (gdb) where

Вы увидите много информации. Fluxgen хочет знать все, что начинается с #.

Сейчас вставьте это в e-mail fluxgen'у и также приаттачте файлы настроек, которые находятся в ~/.fluxbox/.

Пожайлуста не удаляйте core-файлы и директорию с исходными кодами. Fluxgen может задать несколько дополнительных вопросов и тогда вам они понадобятся. Пожайлуста, не отсылайте fluxgen'у core-файлы если он об этом не просит - они специфичны для вашей системы и скорее всего бесполезны дня него, к тому же они довольно большие.