Кент Рейсдорф. 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.
Все программисты Windows при разработке своих приложений сталкиваются с общими нарушениями защиты (General Protection Fault) и общими исключениями защиты (General Protection Exception). Для простоты, я буду ссылаться на то и другое как на GPF.
Отслеживание GPF может быть трудным как для начинающих, так и для опытных программистов в Windows. Обычно по мере приобретения опыта в написании Windows-программ, программисты развивают у себя своего рода шестое чувство причин, вызывающих GPF. В следующих разделах описаны ситуации, о которых следует знать, пытаясь проследить неуловимую GPF. Это лишь некоторые из наиболее распространенных причин краха программы.