PDA

View Full Version : مشکل با watch کردن متغیر های محلی



p_ooya
یک شنبه 04 مرداد 1388, 16:10 عصر
سلام به همه.
من امروز تو محیط دلفی برای مشاهده مقدار یکی از متغیر هام براش یه watch اضافه (add) کردم. اما موقع trace کردن برنامه دیدم به جای مقدار متغیر نوشته :

Variable "X" inaccessible here due to optimization
چرا؟ منظور از اپتیمایز کردن چیست؟ چطور متغیر inaccessible هست، اما برنامه میتونه باهاش کار کنه؟

سپاس.

vcldeveloper
یک شنبه 04 مرداد 1388, 17:22 عصر
برای دیباگ، Compiler Optimization را غیرفعال کنید. وقتی Optmization فعال هست، هر جا که به یک متغیر در کد نیاز نباشه، از اون متغیر در کد استفاده نمیشه، و در زمان دیباگ هم شما بهش دسترسی نخواهید داشت.


منظور از اپتیمایز کردن چیست؟
یعنی بهینه سازی کد ماشین تولید شده توسط کامپایلر، یعنی کامپایلر سعی میکنه با آنالیز کد شما، سریعترین و بهترین کد ماشین را تولید کنه، و هر بخش از کد که در برنامه نقشی نداشته باشه را دور میریزه؛ مثلا اگر شما متغیری در یک تابع تعریف کنید، و در طول اجرای تابع هیچ کار مفیدی با آن انجام ندید، Compiler Optimization باعث میشه که اون متغیر بی مصرف اصلا کامپایل نشه.