Rutinitas debug
Versi debug pustaka runtime C menyediakan banyak layanan diagnostik yang membuat program debugging lebih mudah dan memungkinkan pengembang untuk:
Melangkah langsung ke fungsi run-time selama penelusuran kesalahan
Mengatasi pernyataan, kesalahan, dan pengecualian
Melacak alokasi tumpukan dan mencegah kebocoran memori
Melaporkan pesan debug kepada pengguna
Men-debug versi rutinitas pustaka runtime C
Untuk menggunakan rutinitas ini, _DEBUG
bendera harus ditentukan. Semua rutinitas ini tidak melakukan apa pun dalam build ritel aplikasi. Untuk informasi selengkapnya tentang cara menggunakan rutinitas debug baru, lihat teknik penelusuran kesalahan CRT.
Rutin | Menggunakan |
---|---|
_ASSERT |
Mengevaluasi ekspresi dan menghasilkan laporan debug saat hasilnya FALSE |
_ASSERTE |
Mirip _ASSERT dengan , tetapi menyertakan ekspresi yang gagal dalam laporan yang dihasilkan |
_CrtCheckMemory |
Mengonfirmasi integritas blok memori yang dialokasikan pada tumpukan debug |
_CrtDbgBreak |
Mengatur titik henti. |
_CrtDbgReport , _CrtDbgReportW |
Membuat laporan debug dengan pesan pengguna dan mengirim laporan ke tiga tujuan yang mungkin |
_CrtDoForAllClientObjects |
Memanggil fungsi yang disediakan aplikasi untuk semua _CLIENT_BLOCK jenis pada tumpukan |
_CrtDumpMemoryLeaks |
Buang semua blok memori pada tumpukan debug ketika kebocoran memori yang signifikan telah terjadi |
_CrtIsMemoryBlock |
Verifikasi bahwa blok memori tertentu terletak di dalam timbunan lokal dan memiliki pengidentifikasi jenis blok tumpukan debug yang valid |
_CrtIsValidHeapPointer |
Memverifikasi bahwa penunjuk yang ditentukan berada di tumpukan lokal |
_CrtIsValidPointer |
Verifikasi bahwa rentang memori yang ditentukan valid untuk membaca dan menulis |
_CrtMemCheckpoint |
Dapatkan status tumpukan debug saat ini dan simpan dalam struktur yang disediakan _CrtMemState aplikasi |
_CrtMemDifference |
Membandingkan dua status memori untuk perbedaan yang signifikan dan mengembalikan hasilnya |
_CrtMemDumpAllObjectsSince |
Membuang informasi tentang objek pada timbunan sejak titik pemeriksaan tertentu diambil atau dari awal eksekusi program |
_CrtMemDumpStatistics |
Mencadangkan informasi header debug untuk status memori tertentu dalam formulir yang dapat dibaca pengguna |
_CrtReportBlockType |
Mengembalikan jenis/subjenis blok yang terkait dengan penunjuk blok timbunan debug tertentu. |
_CrtSetAllocHook |
Instal fungsi alokasi yang ditentukan klien dengan menghubungkannya ke dalam proses alokasi memori debug run-time C |
_CrtSetBreakAlloc |
Mengatur titik henti pada nomor urutan alokasi objek tertentu |
_CrtSetDbgFlag |
Mengambil atau mengubah status _crtDbgFlag bendera untuk mengontrol perilaku alokasi manajer timbunan debug |
_CrtSetDumpClient |
Menginstal fungsi yang ditentukan aplikasi yang dipanggil setiap kali fungsi dump debug dipanggil untuk mencadangkan _CLIENT_BLOCK blok memori jenis |
_CrtSetReportFile |
Mengidentifikasi file atau aliran yang akan digunakan sebagai tujuan untuk jenis laporan tertentu menurut _CrtDbgReport |
_CrtSetReportHook |
Instal fungsi pelaporan yang ditentukan klien dengan menghubungkannya ke dalam proses pelaporan debug run-time C |
_CrtSetReportHook2 , _CrtSetReportHookW2 |
Menginstal atau menghapus instalan fungsi pelaporan yang ditentukan klien dengan menghubungkannya ke dalam proses pelaporan debug run-time C. |
_CrtSetReportMode |
Tentukan tujuan umum untuk jenis laporan tertentu yang dihasilkan oleh _CrtDbgReport |
_RPT[0,1,2,3,4] |
Lacak kemajuan aplikasi dengan membuat laporan debug dengan memanggil _CrtDbgReport dengan string format dan jumlah variabel argumen. Tidak menyediakan informasi file sumber dan nomor baris. |
_RPTF[0,1,2,3,4] |
Mirip _RPTn dengan makro, tetapi menyediakan nama file sumber dan nomor baris tempat permintaan laporan berasal |
_calloc_dbg |
Mengalokasikan jumlah blok memori tertentu pada tumpukan dengan ruang ekstra untuk header penelusuran kesalahan dan menimpa buffer |
_expand_dbg |
Mengubah ukuran blok memori yang ditentukan pada tumpukan dengan memperluas atau mengontrak blok |
_free_dbg |
Bebaskan satu blok memori pada tumpukan |
_fullpath_dbg , _wfullpath_dbg |
Buat nama jalur absolut atau lengkap untuk nama jalur relatif yang ditentukan, menggunakan _malloc_dbg untuk mengalokasikan memori. |
_getcwd_dbg , _wgetcwd_dbg |
Dapatkan direktori kerja saat ini, menggunakan _malloc_dbg untuk mengalokasikan memori. |
_malloc_dbg |
Alokasikan blok memori pada tumpukan dengan ruang ekstra untuk header debugging dan timpa buffer |
_msize_dbg |
Menghitung ukuran blok memori pada timbunan |
_realloc_dbg |
Merealokasi blok memori yang ditentukan pada tumpukan dengan memindahkan dan/atau mengubah ukuran blok |
_strdup_dbg , _wcsdup_dbg |
Menduplikasi string, menggunakan _malloc_dbg untuk mengalokasikan memori. |
_tempnam_dbg , _wtempnam_dbg |
Buat nama yang dapat Anda gunakan untuk membuat file sementara, menggunakan _malloc_dbg untuk mengalokasikan memori. |
Rutinitas runtime C yang tidak tersedia dalam formulir kode sumber
Debugger dapat digunakan untuk menelusuri kode sumber untuk sebagian besar rutinitas runtime C selama proses debugging. Namun, Microsoft menganggap beberapa teknologi sebagai kepemilikan dan, oleh karena itu, tidak menyediakan kode sumber untuk subset rutinitas ini. Sebagian besar rutinitas ini termasuk dalam penanganan pengecualian atau grup pemrosesan floating-point, tetapi beberapa lainnya juga disertakan. Tabel berikut mencantumkan rutinitas ini.
Meskipun kode sumber tersedia untuk sebagian printf
besar rutinitas dan scanf
, kode tersebut melakukan panggilan internal ke rutinitas lain yang kode sumbernya tidak disediakan.
Rutinitas yang bertingkat berbeda dalam build debug aplikasi
Beberapa fungsi run-time C dan operator C++ berperilaku berbeda saat dipanggil dari build debug aplikasi. (Anda dapat membuat build debug aplikasi dengan menentukan _DEBUG
bendera atau dengan menautkan dengan versi debug pustaka run-time C.) Perbedaan perilaku biasanya terdiri dari fitur atau informasi tambahan yang disediakan oleh rutinitas untuk mendukung proses debugging. Tabel berikut mencantumkan rutinitas ini.
Rutinitas C abort
Rutinitas C assert
Operator C++ delete
Operator C++ new
Lihat juga
Rutinitas runtime Universal C menurut kategori
Pemeriksaan kesalahan runtime