
- •Институт радиоэлектроники и телекоммуникаций Кафедра радиотехнических систем конспект лекций по дисциплине
- •1.2. Идентификация файлов
- •2.1. Система меню, основные сведения о меню
- •2.2. Системное меню -
- •2.3. Меню File (Файл)
- •2.3.1. Команда New (Новый)
- •2.4. Меню Edit (Редактирование)
- •2.4.7. Команда Copy example (Скопировать пример)
- •2.4.8. Команда Show clipboard (Показать содержимое текстового буфера)
- •2.5. Меню Search (Поиск)
- •2.5.1. Команда Find... (Найти)
- •2.5.2. Команда Replace... (Заменить)
- •2.5.4. Команда Go to line number... (Перейти к строке с номером)
- •2.5.7. Команда Locate function... (Местоположение функции)
- •2.6. Меню Run
- •2.6.6. Команда Arguments... (Аргументы)
- •2.7. Меню Compile (Компиляция)
- •2.8. Меню Debug (Отладка)
- •2.8.4. Команда Watches (Просмотр выражений)
- •2.8.4.2. Команда Delete watch (Удалить выражение просмотра)
- •2.8.4.3. Команда Edit watch... (Редактировать выражение просмотра)
- •2.8.4.4. Команда Remove all watch (Удалить все выражения просмотра)
- •2.8.6. Команда Breakpoints... (Точки останова)
- •2.9. Меню Project (Проект)
- •2.10. Меню Options (Управление системой)
- •2.11. Меню Window (Окно)
- •2.11.3. Команда Cascade (Каскадное расположение)
- •2.11.4. Команда Title (Мозаичное расположение)
- •2.11.7. Команда Close all (Закрыть все)
- •2.11.8. Команда Message (Сообщение)
- •2.11.9. Команда Output (Выводимые данные)
- •2.11.10. Команда Watch (Выражение просмотра)
- •2.11.12. Команда Register (Регистры)
- •2.11.13. Команда Project (Проект)
- •2.11.14. Команда Project notes (Примечания)
- •2.12. Меню Help (Помощь)
- •2.12.1. Команда Contents (Содержание)
- •2.12.5. Команда Help on help (Информация по системе подсказки)
- •2.12.6. Команда Active file... (Активный файл)
- •2.12.7. Команда About... (о...)
- •3.2. Команды редактора
- •4. Компиляция программ
- •4.1. Установка параметров среды и режимов работы компилятора
- •4.2. Виды компиляции программ
- •4.3. Отладка программ на этапе компиляции Просмотр сообщений на этапе компиляции
- •Success : Press any key
- •Корректировка синтаксических ошибок
- •5. Компоновка программ
- •5.1. Команды компоновки программ
- •5.2. Отладка программ на этапе компоновки
- •Errors : Press any key
- •6. Отладка программ на этапе выполнения программы
- •6.1. Основные понятия
- •6.2. Подготовка системы к отладке программы
- •6.3. Установка, удаление и просмотр текущих значений Установка и удаление переменных и выражений из окна просмотра
- •Просмотр текущих значений
- •6.4. Трассировка программы
- •6.5. Работа с функциями
- •7. Сообщения об ошибках
- •Переменные, используемые в сообщениях об ошибках
- •7.1. Сообщения об ошибках на этапе компиляции программы Сообщения об ошибках компиляции
- •Критические (фатальные) ошибки (Fatal error)
- •7.2. Сообщения об ошибках на этапе компоновки
- •Критические (фатальные) ошибки компоновки
- •7.3. Сообщения об ошибках на этапе выполнения программы Ошибки этапа выполнения программы
- •Floating point error: Divide by zero
- •Оглавление
7.3. Сообщения об ошибках на этапе выполнения программы Ошибки этапа выполнения программы
Если во время выполнения программы возникает ошибка, система выдает соответствующее сообщение на экран и выполнение программы прекращается. Связь с оператором, вызвавшим ошибку, не устанавливается. Поиск места программы, вызвавшего ошибку, можно произвести трассировкой программы, что затрудняет ее отладку.
Сообщения об ошибках хранятся в файлах errno.h и math.h. Сообщения об ошибках, вызванных при обращении к библиотечным функциям, расположены в файле errno.h. Сообщения об ошибках, связанных с математическими вычислениями вещественных значений, находятся в файле matherr.c.
Если ошибка возникла при обращении к библиотечным функциям, в переменную errno заносится значение кода (номера) ошибки. Не все библиотечные функции устанавливают переменную errno, а только некоторые. Каждому номеру (errno) соответствует текст сообщения об ошибке в массиве sys_errlist файла errno.h. С помощью функции perror можно вывести эти сообщения из файла errno.h, связанные со значением errno.
Пример программы, с помощью которой можно вывести значения errno и соответствующие им сообщения, дан ниже в листинге. В программе сообщения выводятся с помощью функции fprintf в файл frz и с помощью функции perror в файл stderr. '
Листинг. Вывод сообщений об ошибках при обращении к функциям.
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>
void main(void)
{ // Вывод ошибок из файла errno.h:
FILE *frz;
frz = fopen ("err_fun.rez", "w");
for (errno = 0; errno < 23; errno++)
fprintf(frz,"%d %s\n",
errno, sys_errlist[errno]), perror ("");
close (frz);
}
Для получения сообщений об ошибках можно после вызова функции проверить значение errno, и если оно отлично от нуля, то отпечатать соответствующее сообщение. Например;
if(errno) printf ("\n%d %s\n", errno,
sys_errlist[errno]);
Пример сообщения после попытки извлечения корня квадратного из вещественного отрицательного значения:
sqrt: DOMAIN error
– при обращении к функции sqrt аргумент находится вне допустимых пределов.
Форма сообщения об ошибках, связанных с математическими вычислениями вещественных значений:
Floating point error: текст-сообщения
Пример сообщения после попытки деления на нуль вещественного значения:
Floating point error: Divide by zero
Сообщения, вызванные при работе с библиотеками, файлами и функциями
Сообщения об ошибках
Сообщения из массива sys_errlist файла errno.h:
Argument list too big |
Список аргументов слишком длинный: превышает 128 байт |
|
Attempted to remove current directory |
Попытка пересылки текущей директории |
|
Bad file number |
Ошибочный номер дескриптора (handle) |
|
Cross-device links |
Перекрестная связь устройств. Ошибка возникает при попытке передать файл с одного устройства на другое, используя функцию rename |
|
Exec format error |
Ошибка формата ехес. Попытка выполнить невыполняемую программу |
|
Invalid access code |
Ошибочный код доступа |
|
Invalid argument |
Неверен один из аргументов функции |
|
Invalid data |
Неверные данные |
|
Invalid environrnen |
Ошибочна среда |
|
Invalid format |
Ошибочен формат |
|
Invalid function number |
Ошибочный номер (имя) функции |
|
Invalid memory block adaress |
Ошибочен адрес блока памяти |
|
Memory arena trashed |
Область памяти засорена |
|
No mere files |
Больше нет файлов |
|
Not same device |
Нет такого устройства |
|
No such device |
Не найдено устройство |
|
No such file or directory |
Нет такого файла или директории. Указанный файл не существует или компонент существующей директории не указан в пути |
|
Path not found |
Путь не найден |
|
permission denied |
Доступ невозможен: режим доступа к файлу не позволяет это |
|
Too many open files |
Слишком много открыто файлов. Нет более доступных дескрипторов (handle), так как слишком много открытых файлов |
Сообщения из системы Help об ошибках при работе с библиотеками, файлами и модулями:
Bad header in input LIB |
Ошибочен заголовок входной библиотеки |
Could not allocate memory for per module data |
Невозможно размещение в ОП данных модуля |
Could not create list file 'filename' |
Невозможно создание списка файла filename |
|
Could not write output |
Невозможен вывод в output |
|
DOS reported error; Permission denied opening 'filename' |
Ошибка сообщенная DOS; Разрешения нет на открытие filename |
|
DOS reported error: Permission denied opening 'filename' for output |
Ошибка сообщенная DOS: Разрешения нет на открытие filename для вывода |
|
DOS reported error; Permission denied-renaming 'filename' to 'filename' |
Ошибка сообщенная DOS: Разрешения нет на переименование filename в filename |
|
Error changing file buffer size |
Ошибка в изменении размера буфера файла |
|
Error opening 'filename' |
Ошибка открытия filename |
|
Error opening 'filename' for output |
Ошибка открытия filename для вывода |
|
Error renaming 'filename' to 'filename' |
Ошибка переименования filename в filename |
|
'filename' file not found |
filename файл не найден |
|
Library too large, please restart with /P 'size' |
Библиотека слишком велика, пожалуйста, стартуйте снова с /P size |
|
Liorary coo large, restart with library page size 'size' |
Библиотека слишком велика, нужен рестарт с указанием size - размера страницы |
|
Not enough, memory for command-line ouffer |
Недостаточно памяти для буфера командной строки |
|
Object module 'filename' is invalid |
Ошибочен объектный модуль filename |
|
Out of memory |
Выход за пределы памяти. Надо разбить исходный файл на ряд более простых и коротких файлов и откомпилировать их по отдельности |
|
Out of memory creating extended dictionary |
Выход за пределы памяти при создании расширенного словаря |
|
Out of space allocating per module debug struct |
Выход за пределы пространства при размещении в модуле структуры отладки |
|
Output device is full |
Выводное устройство заполнено |
|
'patr,' - path is too long |
path - слишком длинно |
|
Record length 'len' exceeds available butter in module 'module' |
Длина записи len превышает доступный буфер в модуле module |
|
The combinations '+*' or '*+' are not allowed |
Сочетание +* или *+ недопустимо |
|
Unexpected char 'X' in command line |
Недопустимый символ Х в командной строке |
User break, library aborted |
Прерывание пользователем. Библиотека закрыта |
Предупреждения
Added file 'filename' does not begin correctly, ignored |
У добавляемого файла filename некорректно начало, проигнорировано |
'filename' couldn't be created, original won't be cnanged |
filename не был создан, оригинал не будет изменен |
'filename' file not found |
Файл filename не найден |
Ignored 'module', path is too long |
Проигнорирован module, путь слишком длинный |
Invalid page size value ignored |
Неверно значение размера страницы, проигнорировано |
Memory full listing truncated! |
Память заполнена, вывод усечен! |
'module' already in LIB, not changed! |
module уже в библиотеке, не изменен! |
Module not found in library |
Модуль не найден в библиотеке |
'reason' - extended dictionary not created |
Заключение — расширенный словарь не создан |
Sesulcs are safe in file 'filename' |
Результаты надежно в файле filename |
Unknown command line switch 'X' ignored |
Неизвестный переключатель Х в командной строке проигнорирован |
Use /e with TLINK to obtain debug information from library |
Используйте /е с компоновщиком для получения отладочной информации из библиотеки |
Сообщения об ошибках, связанных с математическими вычислениями, и ошибках этапа выполнения программы
Эти сообщения расположены в файле math.h:
Argument domain error |
Аргумент функции вне допустимого диапазона |
Argument singularity |
Вырожденный, недопустимый аргумент |
Overflow range error |
Ошибка переполнения диапазона |
Underflow range error |
Ошибка потери значимости с выходом из допустимого диапазона |
Total loss of significance |
Полная потеря существенного значения |
partial loss of significance |
Частичная потеря существенного значения |
Floating point unit stack overflow |
Переполнение стека модуля при работе с плавающей точкой |
Сообщения этапа выполнения программы — из раздела Run-time Errors, вызванного по команде Help\Contents\Error Messages:
Abnormal program termination |
Ненормальное завершение программы |
Divide error |
Попытка деления на нуль при работе с данными целого типа |
Floating point error: Divide by zero
|
Ошибка при работе с плавающей точкой: попытка деления на нуль |
Floating point error: Domain
|
Ошибка при работе с плавающей точкой: недопустимое значение аргумента |
Floating point error: Overflow |
Ошибка при работе с плавающей точкой: Переполнение |
Floating precision point error: Partial loss of |
Ошибка при работе с плавающей точкой: Частичная потеря значимости |
Floating point error; Underflow |
Ошибка при работе с плавающей точкой: Потеря значимости |
Floating point error: Stack fault |
Ошибка при работе с плавающей точкой: Стек ошибочен |
Null pointer assignment |
Попытка записать значение по неинициализированному указателю |
Stack overflow |
Стек переполнен |