Кент Рейсдорф. BORLAND C++BUILDER. Раздел 3

Кент Рейсдорф. BORLAND C++BUILDER. Страница 323

Trace МуАрр.срр 18: [Def] х = 100 Warning МуАрр.срр 19: [Def] х is now 100

Как вы видите, в регистрационный файл выводится тип сообщения (трас­сировка или предупреждение), имя модуля, номер строки и текст. Вы можете игнорировать [Def] в регистрационном сообщении, поскольку оно не имеет никакого значения в C++Builder (рассматривайте это как пережиток, сохра­нившийся от Borland С++).

Чтобы использовать диагностические макросы, сначала вы должны оп­ределить их как TRACE и _________________ WARN. Вы можете поместить директивы

#define в начале одного из своих исходных файлов, но лучше добавить их на уровне проекта. Чтобы сделать это, выберите в главном меню пункт Options | Project. Когда появится диалоговое окно Project Options, щелкните на вклад­ке Conditionals/Defines и введите в поле Conditional Defines следующее:

___ TRACE; WARN

Обратите внимание, что перед обоими определениями стоит двойное под­черкивание, и что они отделяются друг от друга точкой с запятой.

Диагностические макросы объявлены в файле checks.h, поэтому вы также должны добавить в свой исходный код следующую строку:

ttinclude <checks.h>

Если вы не сделаете этого, то получите сообщение об ошибке компиляции во всех строках, содержащих TRACE или WARN.

Отслеживание GPF

Все программисты Windows при разработке своих приложений сталки­ваются с общими нарушениями защиты (General Protection Fault) и общими исключениями защиты (General Protection Exception). Для простоты, я буду ссылаться на то и другое как на GPF.

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

Web-дизайн (с) 2010 All rights reserved