تفاوت بین Debug و Release

شنبه 9 آبان 1394

در این مقاله راجع به مد Debug و Release در .NET صحبت خواهیم کرد.وقتی در حالت Release برنامه را اجرا می کنید برای نسخه نهایی است و سرعت آن نسبت به حالت Debug بیشتر است

تفاوت بین Debug و Release

در حالت Release کامپایلر عملکردها و گزینه های بهینه سازی خود را استفاده می کند.و حجم اسمبلی نهایی تولید شده نیز کمتر است .در این حالت حافظه استفاده شده برای کامپایل و اجرای برنامه کمتر از حالت debug است.

زمانیکه برنامه ای را که به زبان .NET نوشته اید را کامپایل می کنید در واقع بیش از 90 درصد انجام کامپایل و بهینه سازی به عهده JIT compiler است و نه کامپایلر خاص زبانی که استفاده کرده اید.

وقتی در حالت Release برنامه را اجرا می کنید برای نسخه نهایی است و سرعت آن نسبت به حالت Debug بیشتر است .حالت Debug برای تست نرم افزار است ،در این حالت یک سری اطلاعات اضافی هم به کد اضافه می شود تا در صورت بودن خطا ، بتوان آن را یافت ، به همین دلیل سرعت آن نسبت به حالت Release پایین تراست .

در حالت Debug برنامه نویس قادر است از Break Point برای متوقف کردن اجرای برنامه تا آن نقطه استفاده کند و از آن مرحله به بعد را به صورت مرحله به مرحله پیش برود تا ببیند منطق برنامه در چه جاهایی به مشکل می خورد . در واقع این مد برای خطایابی و تست مناسب است .

در این مد سایز برنامه بزرگ است و سرعت اجرا مقداری کند است به این خاطر که .Net کتابخانه هایی را به کد ما اضافه می کند.حافظه بیشتری اشغال می شود.

در حالت Release به دلیل اینکه کد و کتابخانه اضافی به کد برنامه اضافه نمی شود سرعت مقداری بیشتر است .در این مد برنامه نویس قادر به اشکال زدایی برنامه نیست.

به کد زیر که Sample کامل آن ضمیمه مقاله می باشد دقت کنید .

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            int i = 1;
            int j = 0;
            Add(i, j);
        }

        static public void Add(int p, int q)
        {
            Sub(p, q);
        }
        static public void Sub(int y, int z)
        {
            Multiply(y, z);
        }
        static public void Multiply(int g, int r)
        {
            Divide(g, r);
        }
        static public void Divide(int d, int h)
        {
            try
            {
                int m = d / h;
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}

 

پس از اجرا در حالت Debug می بینید که میتوان مراحل کامل اجرای برنامه را دید .در شکل زیر می بینید که تک تک توابعی که فراخوانی کرده ایم به ترتیب آمده اند.

سپس مد Release را انتخاب کرده و Ctrl + F5 را اجرا می کنیم .در شکل می بینید که تنها تابع آخر آورده شده است .

فایل های ضمیمه

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید