Biblioteka klas Microsoft Foundation dostarcza wiele usług diagnostycznych, które ułatwiają debugowanie programów łatwiejsze. Te usługi diagnostyczne zawierają makra i funkcje globalne, które umożliwiają śledzenie pamięci programu alokacje, zrzutu zawartość obiektów w czasie wykonywania i wydrukować komunikatów debugowania w czasie wykonywania. Makra i funkcje globalne dla usługi diagnostyczne są zgrupowane w następujących kategoriach:
Te makra i funkcje są dostępne dla wszystkich klas pochodzących z CObject w debugowania i wydanie wersji MFC. Jednakże wszystkie z wyjątkiem DEBUG_NEW i Sprawdź, czy nie rób nic w wersji.
W bibliotece programu Debug wszystkich bloków pamięci przydzielone są oddzielona z serii "straży bajty." Jeśli te bajty są zakłócany przez zapisu wadliwe pamięci, procedur diagnostycznych może zgłosić problem. Jeśli dołączysz wiersz
# define nowych DEBUG_NEW
w pliku wdrażania wszystkich wywołań nowego będzie przechowywać numer pliku i linii, gdzie odbyły się alokacji pamięci. Funkcja CMemoryState::DumpAllObjectsSince wyświetli to dodatkowe informacje, co pozwala zidentyfikować przecieki pamięci. Należy się także odnieść do klasy CDumpContext dodatkowe informacje na temat diagnostycznych wyjściowy.
Ponadto c run-time library obsługuje również zestaw funkcji diagnostycznych, których można użyć do debugowania aplikacji. Aby uzyskać więcej informacji, zobacz Debugowania procedur w Run-Time Library Reference.
| POTWIERDZAJ | Drukuje wiadomość i następnie przerywa programu, jeśli określone wyrażenie ma wartość FAŁSZ wersja debugowania biblioteki. |
| ASSERT_KINDOF | Badania, których obiekt jest obiektem określonej klasy lub klas pochodnych określonej klasy. |
| ASSERT_VALID | Badania wewnętrznych ważności obiektu przez wywołanie funkcji członek jego AssertValid ; zazwyczaj zastąpiona z CObject. |
| DEBUG_NEW | Podaje nazwę pliku i linia numer dla wszystkich przydziałów obiektu w trybie debugowania do znajdowania przecieki pamięci. |
| ŚLEDZENIA | Zapewnia printf-jak zdolności w wersji debugowej biblioteki. |
| TRACE0 | Podobne do śledzenia , ale ma format ciągu bez argumentów. |
| TRACE1 | Podobne do śledzenia , ale ma format ciągu z pojedynczym argumentem. |
| TRACE2 | Podobne do śledzenia , ale ma format ciągu z dwóch argumentów. |
| TRACE3 | Podobne do śledzenia , ale ma format ciągu z trzech argumentów. |
| SPRAWDŹ, CZY | Podobnie na ASSERT ale oblicza wyrażenie w wersji biblioteki, a także w wersji debugera. |
MFC ogólnej diagnostyki zmiennych i funkcje
| afxDump | Zmienną globalną, która wysyła informacje o CDumpContext , aby oknie wyjściowych debugera lub terminalu debugowania. |
| afxMemDF | Zmienną globalną, która steruje zachowaniem debugowania przydzielania pamięci. |
| afxTraceEnabled | Zmienna globalna pozwala włączyć lub wyłączyć wyjście z makra śledzenia. |
| afxTraceFlags | Zmienna globalna używanych do włączania wbudowane funkcje raportowania MFC. |
| AfxCheckError | Zmienna globalna używane do testowania przekazany SCODE czy występuje błąd, i jeśli tak, generuje odpowiednie błąd. |
| AfxCheckMemory | Kontrole integralności wszystkich aktualnie alokowana pamięć. |
| AfxDump | Jeśli jest wywołana w debugerze, zrzuca stan obiektu podczas debugowania. |
| AfxDumpStack | Generowanie obrazu bieżącego stosu. Ta funkcja jest zawsze powiązana statycznie. |
| AfxEnableMemoryTracking | Włącza pamięci śledzenia Włączanie i wyłączanie. |
| AfxIsMemoryBlock | Weryfikuje, właściwie przydzielone bloku pamięci. |
| AfxIsValidAddress | Weryfikuje, że zakres adresów pamięci mieści się w granicach programu. |
| AfxIsValidString | Określa, czy wskaźnik ciąg jest prawidłowa. |
| AfxSetAllocHook | Umożliwia wywołania funkcji w każdej alokacji pamięci. |
Funkcje diagnostyczne 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-pochodnych obiekty, które zostały przyznane z nowych. |