Bagikan melalui


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 _ASSERTdengan , 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