ไลบรารี Microsoft Foundation Class หน้า ๆ บริการวินิจฉัยจำนวนมากที่ทำการดีบักโปรแกรมของคุณได้ง่ายขึ้น บริการเหล่านี้วินิจฉัยรวมแมโครและฟังก์ชันส่วนกลางที่ให้คุณสามารถติดตามหน่วยความจำของโปรแกรมของคุณปันส่วน การถ่ายโอนข้อมูลเนื้อหาของวัตถุในระหว่างเวลาทำงาน และพิมพ์ข้อความที่แก้จุดบกพร่องในระหว่างเวลารัน แมโครและฟังก์ชันสากลสำหรับบริการการวินิจฉัยถูกจัดกลุ่มเป็นประเภทต่อไปนี้:
แมโครและฟังก์ชันเหล่านี้จะพร้อมใช้งานสำหรับชั้นเรียนทั้งหมดที่ได้มาจากCObjectในการตรวจแก้จุดบกพร่องและปล่อยรุ่น MFC อย่างไรก็ตาม ทั้งหมดยกเว้นDEBUG_NEWและการตรวจสอบต้องทำอะไรในรุ่นที่วางจำหน่าย?
ในไลบรารี Debug บล็อกหน่วยความจำที่จัดสรรไว้ทั้งหมดคือ bracketed กับชุด "ยามไบต์" ถ้าไบต์เหล่านี้จะไม่สบายใจ โดยการเขียนหน่วยความจำที่ถูกแบล็คลิสต์ แล้วตามปกติการวินิจฉัยสามารถรายงานปัญหา ถ้าคุณรวมบรรทัด
#กำหนดใหม่ DEBUG_NEW
ในแฟ้มของคุณใช้งาน สายทั้งหมดไปที่ใหม่จะจัดเก็บหมายเลขชื่อแฟ้มและบรรทัดการปันส่วนของหน่วยความจำเบียน ฟังก์ชันCMemoryState::DumpAllObjectsSinceจะแสดงข้อมูลพิเศษนี้ การอนุญาตให้คุณระบุหน่วยความจำรั่วไหล นอกจากนี้อ้างถึงคลาCDumpContextสำหรับข้อมูลเพิ่มเติมเกี่ยวกับการแสดงผลการวินิจฉัย?
นอกจากนี้ ในไลบรารีรันไทม์ C ยังสนับสนุนชุดฟังก์ชันการวินิจฉัยที่คุณสามารถใช้แก้จุดบกพร่องของโปรแกรมประยุกต์ของคุณอีกด้วย ดูข้อมูลเพิ่มเติม ตามปกติการตรวจแก้จุดบกพร่องในการอ้างอิงไลบรารีรันไทม์?
| อ้าง | พิมพ์ข้อความ และ aborts โปรแกรมแล้ว ถ้าระบุนิพจน์ให้เป็น FALSEในรุ่นตรวจแก้จุดบกพร่องของไลบรารี? |
| ASSERT_KINDOF | ทดสอบที่วัตถุเป็นวัตถุ ของคลาสที่ระบุ หรือคลาสที่ได้รับมาจากคลาสที่ระบุ? |
| ASSERT_VALID | ทดสอบความถูกต้องภายในของวัตถุ โดยการเรียกฟังก์ชันของสมาชิกAssertValid โดยทั่วไปจะถูกแทนที่จากCObject? |
| DEBUG_NEW | หน้า ๆ filename และบรรทัดหมายเลขสำหรับการปันส่วนวัตถุทั้งหมดในโหมดดีบักเพื่อค้นหาหน่วยความจำรั่วไหล? |
| สืบค้นกลับ | ให้printf-ต้องการความสามารถในการตรวจแก้จุดบกพร่องรุ่นของไลบรารี? |
| TRACE0 | เหมือนกับการสืบค้นกลับแต่ใช้รูปแบบของสตริงที่ มีไม่มีอาร์กิวเมนต์? |
| TRACE1 | เหมือนกับการสืบค้นกลับแต่ใช้รูปแบบของสตริงที่ มีอาร์กิวเมนต์เดี่ยว? |
| TRACE2 | เหมือนกับการสืบค้นกลับแต่ใช้รูปแบบของสตริงที่ มีอาร์กิวเมนต์ที่สอง? |
| TRACE3 | เหมือนกับการสืบค้นกลับแต่ใช้รูปแบบของสตริงที่ มีอาร์กิวเมนต์ที่สาม? |
| ตรวจสอบ | เช่นเดียวกับASSERTแต่ประเมินค่านิพจน์ในรุ่นที่วางจำหน่ายของไลบรารีเช่นกันเหมือนกับในรุ่น Debug? |
ฟังก์ชันและตัวแปรการวินิจฉัยของ MFC ทั่วไป
| afxDump | ตัวแปรส่วนกลางที่ส่งข้อมูลCDumpContextหน้าต่างผลลัพธ์ดีบักเกอร์ หรือเทอร์มินัลการตรวจแก้จุดบกพร่อง? |
| afxMemDF | ตัวแปรส่วนกลางที่ควบคุมการทำงานของตัวจัดสรรหน่วยความจำดีบัก? |
| afxTraceEnabled | ตัวแปรส่วนกลางที่ใช้ในการเปิดใช้งาน หรือปิดใช้งานการแสดงผลจากแมโครการสืบค้นกลับ? |
| afxTraceFlags | ตัวแปรส่วนกลางที่ใช้เมื่อต้องการเปิดคุณลักษณะการรายงานมีอยู่ภายในของ MFC? |
| AfxCheckError | ตัวแปรส่วนกลางที่ใช้เพื่อทดสอบการส่งผ่าน SCODEเพื่อดู ว่ามีข้อผิดพลาด และ ถ้าเป็นเช่น นั้น ข้อผิดพลาดข้อผิดพลาดที่เหมาะสม? |
| AfxCheckMemory | ตรวจสอบความถูกต้องของทั้งหมดจัดสรรหน่วยความจำในขณะนี้? |
| AfxDump | ถ้าเรียกว่าในขณะที่การดีบักเกอร์ รวมสถานะของวัตถุในขณะที่การดีบัก? |
| AfxDumpStack | สร้างภาพของกองซ้อนปัจจุบัน ฟังก์ชันนี้เชื่อมโยงเสมอคอน? |
| AfxEnableMemoryTracking | เปิดใช้งานหน่วยความจำในการติดตาม และปิด? |
| AfxIsMemoryBlock | ตรวจสอบว่า บล็อกหน่วยความจำได้ถูกกำหนดอย่างถูกต้องไว้? |
| AfxIsValidAddress | ตรวจสอบว่า เป็นช่วงที่อยู่หน่วยความจำภายในขอบเขตของโปรแกรม? |
| AfxIsValidString | กำหนดว่า ตัวชี้ในสายอักขระไม่ถูกต้อง? |
| AfxSetAllocHook | ทำให้การโทรของฟังก์ชันในการจัดสรรหน่วยความจำแต่ละ? |
| AfxDoForAllClasses | ดำเนินการฟังก์ชันที่ระบุบนทั้งหมดCObject-มาเรียนที่สนับสนุนการตรวจสอบชนิดของเวลาทำงาน? |
| AfxDoForAllObjects | ดำเนินการฟังก์ชันที่ระบุบนทั้งหมดCObject-มาวัตถุที่ถูกจัดสรรกับใหม่? |