На этом шаге мы рассмотрим еще один способ борьбы с ошибками.
В шагах 249 и 250 описаны способы обработки ошибок. Но так как нельзя предвидеть все ошибки, необходимо сохранять информацию о неожиданных сбоях. На этом шаге Вы узнаете о третьем способе борьбы с ошибками. Это обычная регистрация всех сбоев без принятия каких-либо мер по их исправлению. Изучив полученные таким образом записи, Вы получите возможность изменить код программы и исправить выявленные ошибки.
В этом методе обнаружения ошибок используется макрос TRACE и некоторые его разновидности. Многие программисты на С организуют нечто похожее с помощью оператора printf(), печатающего комментарии по мере выполнения программы, например, так:
Начало функции Function1 Выделение памяти Память успешно выделена . . . . Выход из функции Function1
Макрос TRACE регистрирует ошибки и отображает сообщения них в месте, указанном в AfxDump (по умолчанию на вкладке Debug окна Output). Этот макрос работает только в отладочной версии программы. В финальной версии он определяется пустым, поэтому размер кода приложения не увеличивается.
Макрос TRACE принимает такие же параметры, как и printf(), поэтому он отображает переменные, что продемонстрировано в следующем примере:
irit iFileSize = 10; char sz [] = "kilobytes"; //Отображение строки "File size is 10 kilobytes " TRACE("File size is %d %s \n",iFileSize,sz);
Длина строки не может превышать 512 символов, включая завершающий NULL. В MFC есть макросы TRACE0, TRACE1, TRACE2 и TRACE3, принимающие фиксированное количество параметров (0, 1, 2 или 3 соответственно). Единственное их преимущество - более компактный код.
Дополнительную информацию по макросу TRACE можно получить здесь.
На следующем шаге мы рассмотрим ошибки COM-компонентов.