Приложение Б Скорая помощь

Обращайтесь за помощью к профессионалам

Независимо от того, насколько вы хороший программист, иногда возникают моменты, когда вы:

• сталкиваетесь с проблемой, которую не можете решить;

• выявили ошибку и хотите сообщить о ней и/или найти обходной путь;

• сталкиваетесь с необходимостью консультации по реализации проекта.

В этой главе мы рассмотрим ресурсы, необходимые при разрешении подобных проблем.

Итак, у вас проблема...

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

Предположим, что что-то вдруг перестало работать или работает не так, как ожидается. Что делать?

RTFM

Читайте документацию! (Оригинальный перевод аббревиатуры RTFM широко известен, поэтому приводить его здесь не будем; любопытные могут затянуть в словарь — например,

http://www.instantweb.com/foldoc/
— прим. ред.) Несмотря на то, что это может показаться элементарным и очевидным первым шагом, число людей, которые этого не делают, просто поразительно!

Все нижеперечисленные справочные руководства по QNX/Neutrino доступны он-лайн:

«Building Embedded Systems» («Построение встраиваемых систем»);

«Development Tools» («Средства разработки»);

«Library Reference» («Справочник по библиотекам»);

«System Architecture» («Системная архитектура»);

«Technotes» («Технические замечания»);

«Utilities Reference» («Справочник по утилитам»).

«Building Embedded Systems» («Построение встраиваемых систем»)

В этой книге содержится вся информация, необходимая для встраивания QNX/Neutrino — то есть чтобы создать систему на основе QNX/Neutrino и заставить ее работать. В ней есть главы по среде разработки программных продуктов (как компилировать, компоновать и отлаживать программы для QNX/Neutrino), построению образа ОС (как создать образ, как встроить этот образ глубоко встраиваемую систему, как заставить его работать на нужной платформе), а также кое-какие общие рекомендации по проектированию.

«Development Tools» («Средства разработки»)

Это справочник по различным средствам разработки, о которых упоминается в книге «Построение встраиваемых систем» — там есть документация по GNU-компилятору и сопутствующим инструментальным средствам, описания средств формирования образов, и т.д. Это прекрасный источник информации для тех случаев, когда инструмент ведет себя не так, как вы от него ожидаете, или когда нужно понять, как работает тот или иной инструмент.

«Library Reference» («Справочник по библиотекам»)

Это руководство по вызовам Си-библиотеки QNX/Neutrino — от А до Z. Применительно к вызовам функций это — истина в высшей инстанции. Я часто ссылался на это издание в предыдущих главах (например, за более подробной информацией о конкретной функции — скажем, о ее редко используемых аргументах).

«System Architecture» («Системная архитектура»)

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

«Technotes» («Технические замечания»)

Серия книг «Технические замечания» содержит описание специфических особенностей QNX/Neutrino и может меняться от версии к версии. Посмотрите онлайновую версию этих документов, чтобы узнать, что характерно для имеющейся у вас версии QNX/Neutrino. Например, для релиза QNX/Neutrino 2.00 BETA 5 в серии «Технические замечания» были рассмотрены следующие темы:

Переход с Neutrino 1.X на версию 2.0;

Интерфейс диспетчеризации в QNX/Neutrino 2.0.

«Utilities Reference» («Справочник по утилитам»)

Этом алфавитный справочник по доступным командно-строковым утилитам. Он описывает все утилиты, не относящиеся к средствам разработки, то есть те, которые не охвачены справочником «Средства разработки» —

grep
,
саt
,
echo
, и т.д.

Свяжитесь с технической поддержкой

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

Обращаться за помощью в группу технической поддержки QSSL можно двояко: либо по телефону, либо через телеконференции QUICS (еще раз отмечу: эта информация устарела, на настоящий момент QUICS упразднена в пользу QDN (

http://qdn.qnx.com
,
nntp://inn.qnx.com
) — прим. ред.).

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

Опишите проблему

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

«Я тут запустил TCP/IP, пытаюсь соединиться

с Windows-машиной, а оно не работает.


В чем дело?!?»

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

Что значит «не работает»? Вы имеете в виду TCP/IP на

стороне QNX или на стороне Windows? Какой модуль TCP/IP

не работает? Что вы пытаетесь сделать? Какие у вас

версии QNX и TCP/IP? Какая у вас версия Windows и какой

там TCP/IP?

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

Существует ряд вещей, которые служба технической поддержки спрашивает всегда. К ним относятся:

• точное описание сбоя;

• версии программных продуктов;

• конфигурация системы;

• аппаратная платформа (x86, РРС, и т.д.)

Точная информация

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

Я пытаюсь подсоединиться по telnet из QNX/Neutrino 2.00A к Windows-машине и сразу же после приглашения login получаю сообщение «Connection closed by foreign host».

Версии

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

ls
и
cksum
. В случае с нашим примером хорошо было бы бы сообщить службе техподдержки, какая у вас версия команды
telnet
, стека TCP/IP, и т.д.

# cd /usr/nto/x86

# ls -l bin/telnet dll/devn-ne2000.so dll/npi-ttcpip.so

-rwxr-xr-x 1 root root  71588 May 19 11:45 bin/telnet*

-rwxr-xr-x 1 root root 680928 May 19 11:05 dll/devn-no2000.so*

-rwxr-xr-x 1 root root  83765 Jun 02 06:39 dll/npi-ttcpip.so*

# cksum bin/telnet dll/devn-ne2000.so dll/npi-ttcpip.so

1574162245  71588 bin/telnet

3564123752 680928 dll/devn-ne2000.so

2582029317  83765 dll/npi-ttcpip.so

Это даст сотрудникам техотдела примерную картину дат, размеров и контрольных сумм ряда объектов, которые, возможно, связаны с проблемой. Отметьте строку «

cd /usr/nto/x86
» — она говорит, что я использую средства разработки в версии для x86.

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

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

Чем более подробную информацию вы предоставите, тем быстрее вам смогут помочь.

Если у вас бета...

Если вы используете бета-версию программного обеспечения (то есть вы подписаны на бета-программу QSSL), вся вышеперечисленная информация критична, потому ваши версии программного обеспечения, скорее всего, будут отличаться от официально выпущенных. Однако, имейте в виду, что в общем случае поддержка бета-версий по телефону в QSSL не предусмотрена, так что здесь единственный способ получить информацию — написать в телеконференцию или, если разработчик запрашивает прямой контакт с вами, поговорить с разработчиком напрямую.

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

Также, если вы обмениваетесь информацией с разработчиком, то имейте в виду, что у него, как правило, есть еще тысяча дел, и он вряд ли сможет ответить на ваш запрос сразу. Дружеский «ping» спустя несколько дней молчания делу не повредит, а вот повторное требование ответа через 15 минут после запроса определенно не прибавит вам новых друзей.

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

В этом случае вы должны быть уверены (потому что вас обязательно спросят!), что все обновления установлены, и в нужном порядке.

Воспроизведите проблему

Один из первых вопросов персонала технической поддержки обычно звучит так: «А оно происходит исключительно с бухты-барахты, или вы можете это повторить намеренно?»

Это не праздное любопытство. Если проблема проявляется редко, она столь же серьезна, как и проблема, которая проявляется регулярно. Главное — понять, с какой стороны подойти.

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

Если проблемная ситуация легко воспроизводится, то технический персонал захочет воспроизвести ее на месте, чтобы продемонстрировать разработчику на «живой» системе. «Смотри-ка! Все умирает, стоит мне сде…»

Сузьте круг поиска

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

В большинстве случаев, которые мне доводилось видеть, местоположение ошибки можно было сузить примерно до 20–30 строк максимум. Большие файлы могут быть действительно полезны для анализа в тех случаях, когда вы подозреваете, что ошибка связана с размерами объектов, а не с библиотеками или ядром. Например, у некоторых утилит может быть задан размер массива по умолчанию, и попытка увеличить его размер ведет к проблеме. В этом случае персонал технической поддержки может запросить у вас

tar
-архив, в котором содержится все. К счастью, создавать tar-архивы несложно. Например, если каталог вашего проекта называется
/src/projects/xyzzy
, и техперсонал хочет посмотреть все, что там находится, вы можете сделать следующее:

# cd /src/projects

# tar cvf xyzzy.tar xyzzy

Это «высосет» все содержимое каталога

xyzzy
(включая все подкаталоги!) в файл с именем
xyzzy.tar
. Если результирующий
tar
-файл получится большим, вы сможете сэкономить время на его загрузку и место на диске, если сожмете его с помощью утилиты
gzip
:

# gzip -9v xyzzy.tar

xyzzy.tar: 60.2% — replaced with xyzzy.tar.gz

Вы сможете затем переслать полученный файл

xyzzy.tar.gz
персоналу техподдержки (лучше, конечно, по FTP, чем электронным письмом :-).

Как сообщить об ошибке

Если вы убеждены в том, что нашли ошибку (например, утилита «падает» по SIGSEGV), вы можете не выставлять ее на всеобщее обсуждение в телеконференцию, а напрямую сообщить об ошибке в QSSL при помощи команды

bug
на QUICS. (Этот способ также устарел. Теперь для сообщения об ошибках используется специальная веб-форма на QDN —
http://qdn.qnx.com/report/problem_report.html
прим. ред.)

Другие источники информации

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

www.qnx.com

Веб-сайт компании QSSL, особенно его раздел техподдержки (

qdn.qnx.com
прим. ред.), наполнен полезной информацией и файлами.

comp.os.qnx

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

Персонал QSSL не всегда следит за этой конференцией (хотя некоторые там все-таки прячутся). Вообще это конференция для тех, у кого есть вопросы, но нет продуктов QNX. В эту конференцию периодически вывешивается сборник ЧаВо (Часто задаваемые Вопросы, или Frequently Asked Questions — FAQ — прим. ред.), из которого можно узнать много полезного о продуктах.

Если вам нужен гарантированный ответ, то лучшим выбором была и остается QUICS.

Каталог «третьих» фирм — продукты и консалтинг

Компания QSSL издает Каталог «третьих» фирм (Third Party Directory), в котором перечислены все сторонние компании и их продукты для QNX (например, многопортовые платы последовательного интерфейса, аппаратные средства стандарта X.25, программное обеспечение), а также представлен список организаций и лиц, оказывающих консалтинговые услуги при разработке проектов.

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

QNXnews

Компания QSSL издает ежеквартальный журнал, называемый QNXnews. Он содержит статьи о заказчиках компании QSSL, примеры применения ими QNX в своих продуктах и решениях, а также объявления от QSSL и «третьих» фирм о новых продуктах и услугах.

Подписка на этот журнал также доступна в QSSL. Обращайтесь к вашему торговому представителю для получения дополнительной информации

Обучение

И, наконец, некоторые компании предлагают курсы обучения по программным продуктам QNX — за подробностями обращайтесь в отдел обучения QSSL

Загрузка...