ลองนึกภาพคุณมีคลาสที่เรียกว่า A พร้อมกับประกาศต่อไปนี้
class A
{
public:
A();
private:
int m_value;
};
คุณต้องการให้โปรแกรมหยุดทำงานเมื่อมีคนแก้ไขค่าของ "m_value"
ไปที่คำจำกัดความของคลาสและใส่เบรกพอยต์ในตัวสร้างของ A
A::A()
{
... // set breakpoint here
}
เมื่อเราหยุดโปรแกรม:
Debug -> เบรกพอยต์ใหม่ -> เบรกพอยต์ข้อมูลใหม่ ...
ที่อยู่: & (สิ่งนี้ -> m_value)
จำนวนไบต์: 4 (เนื่องจาก int มี 4 ไบต์)
ตอนนี้เราสามารถดำเนินการโปรแกรมต่อได้ โปรแกรมดีบั๊กจะหยุดทำงานเมื่อมีการเปลี่ยนแปลงค่า
คุณสามารถทำเช่นเดียวกันกับคลาสที่สืบทอดหรือคลาสผสม
class B
{
private:
A m_a;
};
ที่อยู่: & (สิ่งนี้ -> m_a.m_value)
หากคุณไม่ทราบจำนวนไบต์ของตัวแปรที่คุณต้องการตรวจสอบคุณสามารถใช้ตัวดำเนินการ sizeof ได้
ตัวอย่างเช่น:
// to know the size of the word processor,
// if you want to inspect a pointer.
int wordTam = sizeof (void* );
หากคุณดูที่ "Call stack" คุณจะเห็นฟังก์ชั่นที่เปลี่ยนค่าของตัวแปร