اطلاعیه

Collapse
No announcement yet.

مفهوم دیباگ کردن ؟

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    مفهوم دیباگ کردن ؟

    سلام
    میشه از اساتید کسی توضیح بده که منظور از دیباگ کردن یعنی چی ؟
    این پروگرامرهایی که دیباگر هستند ، چجوری دیباگ می کنند ؟
    برای Avr چه پروگرامرهایی دیباگر هستند ؟
    ممنون

    #2
    پاسخ : مفهوم دیباگ کردن ؟

    سوال جالبی بود.
    از دوستان متخصص و استادم کسی جواب تپلی :mrgreen: برای این سوال داره ؟
    **همیشه به این فکر کن که خداوند با توست**

    دیدگاه


      #3
      پاسخ : مفهوم دیباگ کردن ؟

      تاریخچه کلمه دیباگ:
      واژه باگ و دیباگ کردن صفتی است که دریاسالار خانم گریس هوپر در سال 1940 بکار برد . (بد نیست بدانیم که ایشان در حیطه خود یک پیشگام بود . وی افسر نیروی دریایی ایالات متحده و متخصص کامپیوتر ؛ اولین برنامه های خاص کامپیوترهاروارد مارک یک را ایجاد کرد و اولین کامپایلر برای برنامه نویسی این کامپیوتر را ، توسعه داد.
      به پاس خدمات گسترده این بانو ؛ کشتی جنگی USS Hopper DDG-70 بنام ایشان نامگذاری شد .)

      در زمانی که وی مشغول کار برروی کامپیوتر مارک 2 در دانشگاه هاروارد بود همکارانش یک حشره را که بین یک رله قرار گرفته بود یافتند که مانع انجام صحیح عملیات میشد . بموجب این عملکرد ، اعلام شد که آنها سیستم را دیباگ کردند که سر منشاء وجودی این واژه شد .

      Debugging در سالهای بعد بعنوان متدی برای پیشبرد عملیات یافتن و کاهش دادن شمار باگ ها یا نقص ها در برنامه های کامپیوتری و یا در قطعات الکترونیکی سخت افزاری مورد استفاده قرار گرفت.

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

      پروسه دیباگینگ:

      دنبال کردن جملاتی در برنامه که اشاره بر روند اجرایی آن دارد جهت اطمینان از عملکرد صحیح کل برنامه .

      اولین قدم در دیباگینگ غالبا تلاش برای بازسازی خطا است که معمولا کار ساده ای نیست . بطور مثال در مورد پردازش موازی ویا خطا های نرم افزاری غیر متعارف . پس از باز سازی خطا ؛ ورودی برنامه باید ساده بشود تا باعث ساده سازی عملیات دیباگ گردد. برای مثال یک باگ کامپایلری باعث کرش (Crash) شدن کامپیوتر میشود که معمولا این اتفاق در یک برنامه بسیار بزرگ اتفاق می افتد. اگرچه بعد از ساده سازی مشاهده میشود که تنها چند خط مسول این عملکرد غلط هستند.

      این نوع ساده سازی در واژه بعنوان تقسیم و غلبه بیان میشود.

      برنامه نویس بخشهایی از حالتهای تست را که برای دیباگ در برنامه قرار داده شده برمیدارد تا متوجه خطای دقیق در برنامه بشود .پس از این قسمت برنامه نویس میتواند از Debugger برای امتحان حالتهای برنامه استفاده کند . تا متوجه مقادیر در Call Stack بشود.

      ابزار های دیباگ :

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

      بطور کلی در زبانهای سطح بالا مانند جاوا عملیات دیباگینگ ساده تر انجام میگیرد . دلیل آن وجود عملگر Exception Handling است که موجب توقف عوامل ناخواسته در متن برنامه میشود.

      در برنامه های سطح پایین همانند C و Assembly خطاها در بعضی موارد بشکلی بی سروصدا عمل میکنند ؛ مانند انحراف در حافظه .

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

      در چنین شرایطی ابزار نرم افزاری همه منظوره که خاص همان زبان مشخص شده است بشکلی ویژه مورد استفاده میباشد و بنام ابزارهای بررسی کد های ایستا Static Code analysis tools شناخته میشود .

      این ابزار بدنبال خطاهای شناخته شده خیلی مشخصی میگردد ؛ بسیاری از این خطاها در متن برنامه متداول هستند و خیلی از آنها بندرت اتفاق می افتند .

      این ابزار ها بندرت مورد استفاده کامپایلر یا مترجم قرار میگیرد چون آنها ویژه بررسی متن نیستند بلکه بیشتر وضعیت بررسی معنایی و مفهومی دارند .

      بعضی از این ابزار ها مدعی تشخیص بیش از 300 مشکل و خطای مشخص هستند و در اکثر موارد برای کد نویسی های بسیار وسیع مورد استفاده قرار میگیرند .

      منبع : ویکی پدیا

      دیدگاه


        #4
        پاسخ : مفهوم دیباگ کردن ؟

        اگه بخوام به طور ساده توضیح بدم یعنی اینکه شما توسط برنامه و سخت افزار خاصی به محتوای میکرو دسترسی پیدا کرده و میآ‌تونید قسمت های مختلف برنامه و رجیستها رو خط به خط بررسی کنید(البته PLC ها هم همچین قابلیتی رو دارن)
        به طور مثال این کار در میکرو های AVR توسط JTAG و AVRstudio انجام میشه(اگه میکرو از Jtag پشتیبانی کنه و فیوزبیت Jtag رو غیر فعال نکرده باشید.)
        جالبه که بدونید پروتئوس هم همچین قابلیتی داره و حتی میآ‌تونید با دادن فایل های cof و obj ، برنامه نوشته شده به زبان های C و بیسیک رو خط به خط اجرا کرده و مقدار متغیر های مختلف رو هم ببینید.

        دیدگاه


          #5
          پاسخ : مفهوم دیباگ کردن ؟

          مرسی از حمیدجان
          کلمه دیباگ رو خودم توینت گشتم و پیدا کرده بودم
          سوال اصلیم این بود که تو avr چجور میشه دیباگ کرد که اونم شما توضیح دادید .
          پس یعنی الان اگر یه پروگرامر jtag بسازیم ، می تونیم میکرو رو بوسیله نرم افزار avrstudio دیباگ کنیم ؟
          میشه یک سری توضیحات تکمیلی در این مورد بدین ، چون خیلی دوست دارم همچین چیزی داشته باشم ، فکر کنم خیلی خیلی بیشتر از پروتئوس به درد بخوره .

          دیدگاه


            #6
            پاسخ : مفهوم دیباگ کردن ؟

            بله.
            چه توضیحاتی لازم دارید؟
            مدار Jtag رو دارید یا میآ‌خواید بسازید؟

            دیدگاه


              #7
              پاسخ : مفهوم دیباگ کردن ؟

              مدارش رو اصلا ندارم !
              ولی می خوام بسازم و من هم شروع به دیباگ کردن بکنم . نقشه ای هست که کار کرده باشه و با همین avrstudio هماهنگی داشته باشه ؟

              دیدگاه


                #8
                پاسخ : مفهوم دیباگ کردن ؟

                http://www.eca.ir/forum2/index.php?topic=4898.0
                http://www.eca.ir/forum2/index.php?topic=32485.msg225041#msg225041
                http://www.eca.ir/forum2/index.php?topic=34746.msg168053#msg168053
                http://www.eca.ir/forum2/index.php?topic=30041.msg147341#msg147341

                دیدگاه


                  #9
                  پاسخ : مفهوم دیباگ کردن ؟

                  میشه بگید چطوری میتونم با پروگرامر jlink و نرم افزار keil میکرو را دیباگ کنم؟

                  دیدگاه

                  لطفا صبر کنید...
                  X