Udostępnij za pośrednictwem


Usługi diagnostyczne

Biblioteki Microsoft Foundation Class dostarcza wielu diagnostyczne usług, które ułatwiają debugowanie programów łatwiejsze.Te usługi diagnostyczne zawierać makra i funkcje globalne, które pozwalają śledzić swój program pamięci alokacji, Zrzuć zawartość obiektów w czasie wykonywania i wydrukować komunikaty debugowania w czasie wykonywania.Makra i funkcje globalne dla usług diagnostycznych są podzielone na następujące kategorie:

  • Ogólne makra diagnostyczne

  • Podstawowe funkcje diagnostyczne i zmiennych

  • Obiekt funkcji diagnostycznych

Te makra i funkcje są dostępne dla wszystkich klas pochodzące z CObject w wersji Debug i Release MFC.Jednakże, wszystkie z wyjątkiem DEBUG_NEW i Sprawdź nic nie w wersji wydania.

W bibliotece programu Debug wszystkich bloków alokacji pamięci są na równi z serii "guard bajtów." Jeśli tych bajtów jest zakłócany przez wadliwe pamięci zapisu, procedur diagnostycznych może zgłosić problem.Czy uwzględnić wiersz:

#define new DEBUG_NEW

w pliku implementacji wszystkich wywołań Nowy będą przechowywane nazwy pliku i numerem wiersza którym nastąpiło alokacji pamięci.Funkcja CMemoryState::DumpAllObjectsSince będą wyświetlane te dodatkowe informacje to pozwala zidentyfikować przecieki pamięci.Należy się także odnieść do klasy CDumpContext dodatkowe informacje na temat diagnostyczne dane wyjściowe.

Ponadto biblioteki wykonawczej C obsługuje również zestaw funkcji diagnostycznych używanych do debugowania aplikacji.Aby uzyskać więcej informacji, zobacz Debugowania procedur w Skorowidzu Run-Time Library.

Makra diagnostyczne ogólne MFC

POTWIERDZENIA

Drukuje wiadomość i następnie przerywa program określony wyrażenie ma wartość FALSE w wersji debugowej biblioteki.

ASSERT_KINDOF

Testy, które obiekt jest obiektem określonej klasy lub klasy pochodzącej od określonej klasy.

ASSERT_VALID

Testy wewnętrzne ważności obiektu, wywołując jego AssertValid funkcji składowej; Zazwyczaj nadpisane przez CObject.

DEBUG_NEW

Dostarcza nazwę pliku i numerem wiersza dla wszystkich przydziałów obiektu w trybie debugowania jako pomocy w znalezieniu przecieki pamięci.

DEBUG_ONLY

Podobny do ASSERT , ale nie sprawdza wartość wyrażenia; przydatne dla kodu, należy wykonać tylko w trybie debugowania.

TRACE

Zawiera printf-zdolność w wersji debugowej biblioteki, np.

SPRAWDŹ

Podobny do ASSERT , ale oblicza wyrażenie w wersji z biblioteki, jak również w wersji Debug.

Zmienne diagnostyczne ogólne MFC i funkcje

afxDump

Zmienna globalna, która wysyła CDumpContext informacji do okna danych wyjściowych debugera lub terminal debugowania.

afxMemDF

Zmienna globalna, która steruje zachowaniem debugowania program przydzielania pamięci.

AfxCheckError

Zmienna globalna używane do testowania przekazany SCODE Aby sprawdzić, czy błąd i, jeśli tak, wygeneruje odpowiedni komunikat.

AfxCheckMemory

Sprawdza integralność wszystkich aktualnie przydzielonej pamięci.

AfxDump

Jeśli wywoływana, podczas gdy w debugerze, zrzuca stan obiektu podczas debugowania.

AfxDumpStack

Generowanie obrazu bieżącego stosu.Ta funkcja jest zawsze połączony statycznie.

AfxEnableMemoryLeakDump

Włącza zrzut przeciek pamięci.

AfxEnableMemoryTracking

Włącza lub wyłącza śledzenie pamięci.

AfxIsMemoryBlock

Sprawdza prawidłowo przydzielany blok pamięci.

AfxIsValidAddress

Sprawdza, czy w jego granicach zakresu adresów pamięci.

AfxIsValidString

Określa, czy wskaźnik na ciąg jest prawidłowy.

AfxSetAllocHook

Włącza wywołujący funkcję na każdej alokacji pamięci.

Funkcji diagnostycznych obiektu MFC

AfxDoForAllClasses

Wykonuje funkcję na wszystkich CObject-pochodnych klas, które obsługują kontrola typów w czasie wykonywania.

AfxDoForAllObjects

Wykonuje funkcję na wszystkich CObject-pochodzących z obiektów, które zostały przydzielone z Nowy.

Zobacz też

Koncepcje

Makra i funkcje globalne MFC