4.3.2. Стиль сообщения об ошибках

4.3.2. Стиль сообщения об ошибках

Для использования в сообщениях об ошибках С предоставляет несколько специальных макросов. Наиболее широкоупотребительными являются __FILE__ и __LINE__, которые разворачиваются в имя исходного файла и номер текущей строки в этом файле. В С они были доступны с самого начала. C99 определяет дополнительный предопределенный идентификатор, __func__, который представляет имя текущей функции в виде символьной строки. Макросы используются следующим образом:

if (some_system_call(param1, param2) < 0) {

 fprintf(stderr, "%s: %s (%s %d): some_system_call(%d, %d) failed: %s ",

  argv[0], __func__, __FILE__, __LINE__,

  param1, param2, strerror(errno));

 return 1;

}

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

Таблица 4.2. Диагностические идентификаторы C99

Идентификатор Версия С Значение
__DATE__ C89 Дата компиляции в виде «Mmm nn yyyy»
__FILE_ Оригинальная Имя исходного файла в виде «program.c»
__LINE__ Оригинальная Номер строки исходного файла в виде 42
__TIME__ C89 Время компиляции в виде «hh:mm:ss»
__func__ C99 Имя текущей функции, как если бы было объявлено const char __func__[] = "name"

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

Сегодня, хотя системы GNU/Linux поставляются с исходными кодами, указанный исходный код часто не устанавливается по умолчанию. Поэтому использование этих идентификаторов для сообщений об ошибках не представляет дополнительной ценности. GNU Coding Standards даже не упоминает их.

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Отправка сообщений об ошибках

Из книги автора

Отправка сообщений об ошибках Если вы обнаружили ошибку, то наилучшим решением будет исправить ее, сгенерировать соответствующую заплату, оттестировать и отправить, как это будет рассказано в следующих разделах. Конечно, можно и просто сообщить об ошибке, чтобы


(8.6) В системном логе постояно появляются сообщения об ошибках. Как с этим бороться?

Из книги автора

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


7.2 Сообщения об ошибках ICMP

Из книги автора

7.2 Сообщения об ошибках ICMP Бывают ситуации, приводящие к отбрасыванию (удалению из сети) датаграммы IP. Например, точка назначения может стать недоступной из-за обрыва связи. Или может завершиться время жизни датаграммы. Маршрутизатор не сможет переслать длинную


7.2.1 Типы сообщений об ошибках

Из книги автора

7.2.1 Типы сообщений об ошибках На рис. 7.3 показаны обобщенные сообщения, формируемые маршрутизатором и хостом назначения для отчета о возникшей проблеме. В таблице 7.1 перечислены формальные имена сообщений об ошибках ICMP. Рис. 7.3. Типы сообщений об ошибках ICMPТаблица 7.1


Используйте однозначные сообщения об ошибках

Из книги автора

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


Отчет об ошибках

Из книги автора

Отчет об ошибках На вкладке Дополнительно в окне Свойства системы нажимаем кнопку Отчет об ошибках. Откроется одноименное окно Отчет об ошибках (рис. 4.5), в котором устанавливаем переключатель в положение Отключить отчет об ошибках и оставляем установленным флажок Но


74. Уведомляйте об ошибках, обрабатывайте и преобразовывайте их там, где следует

Из книги автора

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


Сообщения об ошибках gsec

Из книги автора

Сообщения об ошибках gsec В табл. 34.2 представлены сообщения об ошибках gsec.Таблица 34.2. Сообщения об ошибках gsec Сообщение Причины и рекомендуемые действия Add record error (Ошибка добавления записи) Неверный синтаксис или вы пытаетесь добавить пользователя, который уже


Сообщение об ошибках gbak

Из книги автора

Сообщение об ошибках gbak В табл. 38.3 описаны сообщения об ошибках, которые могут возникнуть в процессе копирования и восстановления, вместе с некоторыми советами, как поступать с этими ошибками.Таблица 38.3. Сообщения об ошибках gbak при копировании и восстановлении Сообщение


Сообщения об ошибках gfix

Из книги автора

Сообщения об ошибках gfix В табл. 39.2 представлены исключения, которые могут появиться в командах gfix вместе с советами, как скорректировать ваши команды.Таблица 39.2. Сообщения об ошибках gfix Сообщение об ошибке Причины и рекомендуемые действия Database file name <string> already given (Имя


Пример 9-13. Подстановка параметров и сообщения об ошибках

Из книги автора

Пример 9-13. Подстановка параметров и сообщения об ошибках #!/bin/bash# Проверка отдельных переменных окружения.# Если переменная, к примеру $USER, не установлена,#+ то выводится сообщение об ошибке.: ${HOSTNAME?} ${USER?} ${HOME?} ${MAIL?} echo echo "Имя машины: $HOSTNAME." echo "Ваше имя: $USER." echo "Ваш домашний


Отчеты об ошибках

Из книги автора

Отчеты об ошибках В операционной системе Windows Vista реализован новый механизм отчетов об ошибках. Теперь ограничить и настроить его работу можно с помощью следующих параметров, расположенных в ветви реестра HKEY_CURRENT_USERSoftwarePoliciesMicrosoftWindowsWindows Error Reporting. Если не сказано иное,


8.4.2. Подавление вывода сообщений об ошибках

Из книги автора

8.4.2. Подавление вывода сообщений об ошибках Допустим, вы хотите найти запись пользователя louise в системном файле паролей:$ grep louise /etc/passwdlouise:lxAL6GW9G.ZyY:501:501:Accounts Sect1С:/home/accts/louise:/bin/shHe исключена возможность, что вы забудете, как называется этот файл. В таком случае воспользуйтесь


Как учиться на чужих ошибках

Из книги автора

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


Текстовые сообщения об ошибках

Из книги автора

Текстовые сообщения об ошибках У каждого компьютера есть базовая система ввода/ вывода (BIOS, Basic Input/Output System). Одной из функций BIOS является функция самодиагностики при включении компьютера – POST (Power On Self Test).POST – это программа самотестирования компьютера. Запускается сразу