PDA

نسخه کامل مشاهده نسخه کامل : سؤال 1 آماتور در مورد تفاوت ديباگر و كامپايلر



am_merman01
20-06-2007, 00:07
سلام دوستان من 1 بر نامه نويس تازه كارم و ميخواستم بدونم تفاوت ديباگر با كامپايلر در چيه
اميد وارم يك نفر من رو از اين ابهام نجات بده.

__Genius__
20-06-2007, 06:03
سلام دوست خوب ...
در مورد compiler این همیشه مد نظرتون باشه که بحث جدایی از debugger داره ... ولی کلا کامپایلر برنامه ها و کدهای نوشته شده شما رو در درجه اول به زبان ماشین ترجمه میکنه و اکثر به صورت اتوماتیک لینکی میسازن که فایل Executable شما ساخته بشه ... در صورتی که کاملا با مفسر Interpreter فرق میکنه ...
Assembly یک مفسر هست ... ولی چیزی مثل Visual C++ یک کامپایلر هست ..
اما در مورد Debugger همون طور که از اسمش پیداست عمل DeBug رو برای شما انجام میده ...
یعنی باگهای احتمالی کدهای شما رو رفع میکنه و نقطه های خطرناک برنامه که میتونه به محصول شما ضرر زیادی بزنه رو بررسی کنه .... و گوشزد کنه ... الان اگه دقت کرده باشی Visual C و اکثر کامپایلر ها یه Debugger قوی با Plugin های خیلی قوی دارن که با استفاده از اونا میتونین مشکلات برنامه نویسی رو حل کنید ...
فرض میکنیم شما در قستی از برنامتون پارامتری رو به عنوان ورودی از کاربر دریافت میکنین و حالا یاتون رفته اون ورودی رو چک کنین که اگر از یه حد خاصی گذشت Handling بشه و به جای دیگه ای توسط Exception های شرطی فرستاده بشه ... فرض کنیم پارامتر رو چک نکردین .. خوب قاعدتا اگر برنامه شما static عمل کنه حفره و باگ از نوع Stack Overflow و دز سطح Stack از memory رخ میده ولی اگه از حالت Dynamic و Run time allocation استفاده کرده باشین باگ از نوع Heap Overflow و در سطح حافظه Heap که بسیار نقطه حساسی در حافظه هست و رخ میده ... حالا تنها با یک چیز قابل از ارائه محصول ( صرفا برای عدم بروز اشکال برای کاربران نرم افزار شما ) میتونه باگهای نرم افزاری شما رو به شما نشون بده و اون Debugger هست ... البته جدای از debugger هایی که خود compiler ها دارن debugger های جدایی داریم ....
ولی کلا debugger ها از مشخصه ای به نام Ring از هم جدا و سوا میشن ...
مثلا هر چه شماره Ring پائین تر باشد قاعدتا قدرت debugger بالاتر و در سطح low level کار میکنه ....
مثلا debugger قدرتمند softice که خیلی معروف هست ring 0 هست و قابلیت debug کردن در سطح Kernel رو داره ... از debugger های دیگه توی platform ویندوز میشه ollydbg رزو گفت که خوب خیلی خوبه ...
ولی توی platform لینوکس و امثال unix و کلا nix* ها میشه به GDB اشاره کرد که قدرت فوق العاده ای داره ...
اگه جایی نا مفهوم بود لطفا بگین ...
خوش باشید ....

am_merman01
22-06-2007, 00:11
خدا خيرت بده دوست عزيز
بعد ار مدت طولاني بالاخره روم شد اين سؤال رو بپرسم
خداييش توضيحت كامل بود
واقعاً دستت درد نكنه

farhamyari
23-06-2007, 23:16
[ برای مشاهده لینک ، لطفا با نام کاربری خود وارد شوید یا ثبت نام کنید ]