Отладка приложений


Глубокие проверки корректности - часть 3


 IMPLEMENT_MEMDEBUG ( TestClass);

Listing 15-2DUMP.CPP *

// Методы выдачи дампов и проверки корректности блоков памяти

 #ifdef _DEBUG

void TestClass::ClassDumper ( const void * pData)

 {

TestClass * pClass = (TestClass*JpData; 

_RPT1 ( _CRT_WARN,

" TestClass::ClassDumper : %s\n", pClass->m_szData);

 }

 void TestClass::ClassValidator ( const void * pData ,

const void * )

 {

// Проверка корректности данных.

 TestClass * pClass = (TestClass*)pData;

 _RPT1 ( _CRT_WARN ,

 " TestClass::ClassValidator : %s\n",

 pClass->m_szData ); 

}

#endif

typedef struct tag_SimpleStruct 

{

char szNamef 256 ]; char szRank[ 256 ]; 

SimpleStruct;

// Методы выдачи дампов и проверки корректности для памяти, 

// содержащей простые строчные данные 

void DumperOne ( const void * pData} 

{

_RPT1 ( _CRT_WARN, " Data is : %s\n", pData); 

}

void ValidatorOne ( const void * pData, const void * pContext) 

 // Проверка корректности строчных данных

. _RPT2 ( _CRT_WARN,

" Validator called with : %s : Ox%08X\n",

  pData, pContext); 

}

// Методы вьщачи дампов и проверки корректности для структур

 void DumperTwo ( const void * pData)

 {

_RPT2 ( _CRT_WARN

" Data is Name : %s\n"

 " Rank : %s\n" ,

  ((SimpleStruct*)pData)->szName , 

((SimpleStruct*)pData)->szRank ); 

}

void ValidatorTwo ( const void * pData, const void * pContext)

 {

// Проверка корректности структур.

_RPT2 ( _CRT_WARN , " Val%dator called with :\n" 

" Data is Name : %s\n"

 " Rank : %s\n" , 

((SimpleStruct*)pData)->szName ,

  ((SimpleStruct*)pData)->szRank ); 

}

// К сожалению, функции языка С используют собственные структуры

 // DVINFO. Эти структуры необходимо определять как внешние ссылки, а 




Начало  Назад  Вперед



Книжный магазин