فرق debug با release - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

فرق debug با release

+4 امتیاز
آقا این debug کردن و release کردن توی Qt داستانشون چیه ؟  من همیشه با debug کامپایل می کنم سریع تره کار درستی می کنم ؟
سوال شده دی 23, 1392  بوسیله ی shahin (امتیاز 48)   1 5 10
دوباره تگ گذاری شد دی 28, 1392 بوسیله ی BlueBlade

2 پاسخ

+6 امتیاز
 
بهترین پاسخ
سلام

شما وقتی بصورت Debug کامپایل میکنید کامپایلر یه سری اطلاعات جداگونه هم به فایل exe اضافه میکنه که وقتی برنامه جای به مشکل خورد و error داد شما بتونید نرم افزار رو اصطلاحا "tracing" کنید اما در حالت release قضیه فرق میکنه

شما وقتی بصورت release نرم افزار رو کامپایل میکنید که نرم افزار شما کامل شده و میخواید تحویل کاربر/مشتری بدید.
در کل debug برای اینه که برنامه نویس bug های برنامه ی نوشته شده رو پیدا کنه...

درضمن سرعت اجرای release از debug بیشتر بوده و حجم کمتری داره

موفق باشید
پاسخ داده شده دی 23, 1392 بوسیله ی amc (امتیاز 280)   3 5 16
انتخاب شد بهمن 15, 1392 بوسیله ی shahin
+4 امتیاز
علاوه بر مطالبی که دوستان عرض کردند در مد debug اطلاعات اضافی توسط خود کامپایلر تولید میشه گاهی اوقات برنامه شما در مد دیباگ براحتی کار میکنه ولی در release نه. چرا؟ مشخصه allocator در این مود وقتی حافظه ای به روش های مختلف (استاتیک و دینامیک) در اختیار شما قرار میده با مقدار مشخص set می کنه(البته نوع این pattern ها در کامپایلر های مختلف متفائت هستش) و شما اگر در کد خودتون اشتباه هم کرده باشید همیشه و در هر بار کامپایل با یک مقدار اشتباه ثابت طرف هستید و چون کد شما با این مقدار ثابت اشتباه هم همیشه درست کار می کنه حالا همین کد را می برید تو مود release همین برنامه در هر بار کامپایل به خطا بر می خوره و در مواردی هم به خطا بر نمی خوره به خاطر اینکه در مود release حافظه هیچ دستکاری صورت نمی گیره و هر چیزی ممکنه توش باشه.
از جمله مواردی که شما بایستی در برنامه نویسی C++‎‎‎‎‎ رعایت کنید fill کردن حافظه قبل از استفاده هستش که دیگه به این مشکلات برخورد نمی کنید.
وقتی حافظه رو از stack می گیرید مقادیر با 0xcccccccc پر شده وقتی از heap می گیرید با مقدار 0xbaadf00d پرشده البته حالت های دیگری هم وجود داره.
پاسخ داده شده دی 23, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
...