Rutiny ladění
Ladicí verze běhové knihovny jazyka C poskytuje spoustu diagnostických služeb, které usnadňují ladění programů a vývojářům umožňuje:
Krok přímo do běhových funkcí během ladění
Vyřešit kontrolní výrazy, chyby a výjimky
Trasovat přidělení haldy a zabránit nevracení paměti
Ohlásit zprávy ladění uživateli
Ladicí verze rutin běhové knihovny jazyka C
Chcete-li použít tyto rutiny, musí být definován příznak _DEBUG . Všechny tyto rutiny nedělají nic v maloobchodním sestavení aplikace. Další informace o tom, jak používat nové rutiny ladění, naleznete v tématu techniky ladění CRT.
| Rutina | Použití |
|---|---|
_ASSERT |
Vyhodnocení výrazu a vygenerování sestavy ladění, pokud je výsledek FALSE |
_ASSERTE |
Podobně jako v _ASSERT případě, ale obsahuje neúspěšný výraz ve vygenerované sestavě |
_CrtCheckMemory |
Potvrďte integritu paměťových bloků přidělených na haldě ladění |
_CrtDbgBreak |
Nastaví bod přerušení. |
, _CrtDbgReportW |
Generování sestavy ladění pomocí uživatelské zprávy a odeslání sestavy do tří možných cílů |
_CrtDoForAllClientObjects |
Volání funkce poskytované aplikací pro všechny _CLIENT_BLOCK typy v haldě |
_CrtDumpMemoryLeaks |
Vypsat všechny bloky paměti v haldě ladění při výskytu významné nevrácené paměti |
_CrtIsMemoryBlock |
Ověřte, že zadaný blok paměti je umístěný v rámci místní haldy a že má platný identifikátor typu bloku haldy ladění. |
_CrtIsValidHeapPointer |
Ověřuje, že zadaný ukazatel je v lokální haldě. |
_CrtIsValidPointer |
Ověřte, že zadaný rozsah paměti je platný pro čtení a zápis. |
_CrtMemCheckpoint |
Získejte aktuální stav haldy ladění a uložte ho do struktury dodané aplikací. _CrtMemState |
_CrtMemDifference |
Porovnání dvou stavů paměti pro významné rozdíly a vrácení výsledků |
_CrtMemDumpAllObjectsSince |
Vypsat informace o objektech v haldě od provedení zadaného kontrolního bodu nebo od spuštění programu |
_CrtMemDumpStatistics |
Vypsat informace hlavičky ladění pro zadaný stav paměti v uživatelsky čitelné podobě |
_CrtReportBlockType |
Vrátí typ bloku nebo podtyp přidružený k danému ukazateli bloku haldy ladění. |
_CrtSetAllocHook |
Nainstalujte funkci alokace definovanou klientem a zapojte ji do procesu přidělování paměti ladění jazyka C za běhu. |
_CrtSetBreakAlloc |
Nastaví zarážku na zadaném čísle pořadí přidělení objektu. |
_CrtSetDbgFlag |
Načtěte nebo upravte stav _crtDbgFlag příznaku pro řízení chování přidělení Správce haldy ladění. |
_CrtSetDumpClient |
Nainstalujte funkci definovanou aplikací, která se volá pokaždé, když se zavolá funkce výpisu ladění pro _CLIENT_BLOCK bloky paměti typu výpisu. |
_CrtSetReportFile |
Identifikujte soubor nebo datový proud, který má být použit jako cíl pro konkrétní typ sestavy _CrtDbgReport |
_CrtSetReportHook |
Nainstalujte funkci vytváření sestav definovanou klientem tak, že ji připojíte k procesu vytváření sestav ladění jazyka C za běhu. |
, _CrtSetReportHookW2 |
Nainstaluje nebo odinstaluje funkci vytváření sestav definovanou klientem, a to tak, že je zapojte do procesu generování sestav ladění v jazyce C za běhu. |
_CrtSetReportMode |
Zadejte obecné cíle pro konkrétní typ sestavy vygenerované _CrtDbgReport |
_RPT[0,1,2,3,4] |
Sledujte průběh aplikace vygenerováním sestavy ladění voláním _CrtDbgReport řetězce formátu a variabilního počtu argumentů. Neposkytuje žádné informace o zdrojovém souboru a čísle řádku. |
_RPTF[0,1,2,3,4] |
Podobá se _RPTn makrům, ale poskytuje název zdrojového souboru a číslo řádku, kde požadavek na sestavu pochází. |
_calloc_dbg |
Přidělení zadaného počtu paměťových bloků na haldě s dodatečnou mezerou pro hlavičku ladění a přepsání vyrovnávací paměti |
_expand_dbg |
Změnit velikost zadaného bloku paměti na haldě Rozbalením nebo vyplněním bloku |
_free_dbg |
Uvolněte blok paměti v haldě. |
, _wfullpath_dbg |
Pro zadaný název relativní cesty vytvořte absolutní nebo úplný název cesty pomocí _malloc_dbg k přidělení paměti. |
, _wgetcwd_dbg |
Získá aktuální pracovní adresář pomocí _malloc_dbg k přidělení paměti. |
_malloc_dbg |
Přidělte blok paměti v haldě s dodatečnou mezerou pro hlavičku ladění a přepsat vyrovnávací paměti. |
_msize_dbg |
Vypočítat velikost bloku paměti v haldě |
_realloc_dbg |
Přerozdělení zadaného bloku paměti na haldu přesunutím a/nebo změnou velikosti bloku |
, _wcsdup_dbg |
Duplikuje řetězec pomocí _malloc_dbg k přidělení paměti. |
, _wtempnam_dbg |
Vygenerujte názvy, které můžete použít k vytvoření dočasných souborů pomocí _malloc_dbg k přidělení paměti. |
Běhové rutiny jazyka C, které nejsou k dispozici ve formuláři zdrojového kódu
Ladicí program lze použít pro krokování zdrojového kódu pro většinu rutin modulu runtime jazyka C během procesu ladění. Společnost Microsoft však považuje určitou technologii za proprietární a proto neposkytuje zdrojový kód pro podmnožinu těchto rutin. Většina těchto rutin patří buď ke zpracování výjimek, nebo ke skupinám zpracování s plovoucí desetinnou čárkou, ale obsahuje i několik dalších. Následující tabulka uvádí tyto rutiny.
Přestože je zdrojový kód k dispozici pro většinu rutin printf a scanf , provádí interní volání jiné rutiny, pro kterou není zadán zdrojový kód.
Rutiny, které se chovají jinak v sestavení ladění aplikace
Některé běhové funkce a operátory jazyka C++ se chovají odlišně při volání z ladicího sestavení aplikace. (Všimněte si, že sestavení ladění aplikace lze provést buď definováním _DEBUG příznaku, nebo propojením s ladicí verzí knihovny run-time jazyka C.) Rozdíly v chování obvykle sestávají z dalších funkcí nebo informací, které rutina poskytuje pro podporu procesu ladění. Následující tabulka uvádí tyto rutiny.
abortRutina jazyka C
assertRutina jazyka C
deleteOperátor C++
newOperátor C++
Viz také
Rutiny UCRT (Universal C runtime) podle kategorie
Kontrola chyb v době běhu