اطلاعیه

Collapse
No announcement yet.

باگ های کدویژن

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

    باگ های کدویژن

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

    #2
    پاسخ : باگ های کدویژن

    با درود
    فکر کنم لسن مواردی که ذکر کردی بخاطر حافظه موقت با اس رم باشه
    وقتی چندین تابع باز یا تو در تو داری این اتفاق باید بیوفته
    البته خود کدویژن اخطار میده یا برخی مواقع کمپایل نمیکنه

    اون موردی که میگید چند دستور در یک خط ؟ اینم فکر نکنم همچین چیزی وجود داشته باشه بغیر اینکه نوع دستوراتی که بکار بردید
    مثلا شما شرایط درست ایف و الس رو رعایت نکردید و پشت هم ایف زدید و پرانتز ها رو خوب رعایت نکردید

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

    دیدگاه


      #3
      پاسخ : باگ های کدویژن

      نوشته اصلی توسط sepehr63 نمایش پست ها
      سلام
      یک سری باگ من از کد ویژن دیدم توی برنامه های بزرگی که توابع زیادی داخلش تعریف هست
      مثلا بعضی وقت ها چند دستور توی یک خط بنویسیم اون خط یا کار نمیده و یا با مشکل کار میده
      یا اینکه یه دستوری توی یک تابع کار نمیکرده . یه تابع دیگه تعریف کردم و همون خط توی اون نوشتم و اون تابع فراخوانی کردم و دوباره برگشتم دست کار میکرده !!!
      نمیدونم دلیلش چی بوده . اگه از این باگ ها توی کد ویژن دیدید و یا نکته هایی توی کد زنی دارید بی زحمت بگید.
      سلام نه فقط کدویژن نیست نرم افزار های دیگه هم من کار کردم همین طور
      هست دلیلش هم این هست که نرم افزارها اصل نیست و کرک شده هست
      بهترین راه هم برای برنامه نویسی این هست که از نرم افزارهای رایگان که
      توسط برخی شرکت ها در اختیار افراد هست استفاده بشه یا اینکه لایسنس
      اصل نرم افزار خریده بشه که البته بخاطر $ برای ما ایرانی ها مقدور نیست
      قصه زندگی همیشه با مدادی که ما دوست داریم نوشته نمی شه .....

      دیدگاه


        #4
        پاسخ : باگ های کدویژن

        نوشته اصلی توسط sepehr63 نمایش پست ها
        سلام
        یک سری باگ من از کد ویژن دیدم توی برنامه های بزرگی که توابع زیادی داخلش تعریف هست
        مثلا بعضی وقت ها چند دستور توی یک خط بنویسیم اون خط یا کار نمیده و یا با مشکل کار میده
        یا اینکه یه دستوری توی یک تابع کار نمیکرده . یه تابع دیگه تعریف کردم و همون خط توی اون نوشتم و اون تابع فراخوانی کردم و دوباره برگشتم دست کار میکرده !!!
        نمیدونم دلیلش چی بوده . اگه از این باگ ها توی کد ویژن دیدید و یا نکته هایی توی کد زنی دارید بی زحمت بگید.
        تا کد نباشه نمیشه روند اجرا رو بررسی کرد

        مواردی که شرح دادید بیشتر شبیه مشکلاتیه که بعد از اعمال optimization توسط کامپایلر ایجاد میشن
        اینجور مسائل باگ نیست ، تفسیر متفاوت کامپایلر نسبت به کاری هست که مد نظر برنامه نویسه .

        برای تستش میتونید موقتا optimization رو غیر فعال کنید اگر مشکل رفع شد روند نوشتن کدتون ایراد داشته که بهتره اصل موضوع و منشا ایجاد سوء تفاهم با کامپایلر رو برطرف کنید

        دیدگاه


          #5
          پاسخ : باگ های کدویژن

          نوشته اصلی توسط کاکو نمایش پست ها
          با درود
          فکر کنم لسن مواردی که ذکر کردی بخاطر حافظه موقت با اس رم باشه
          وقتی چندین تابع باز یا تو در تو داری این اتفاق باید بیوفته
          البته خود کدویژن اخطار میده یا برخی مواقع کمپایل نمیکنه

          اون موردی که میگید چند دستور در یک خط ؟ اینم فکر نکنم همچین چیزی وجود داشته باشه بغیر اینکه نوع دستوراتی که بکار بردید
          مثلا شما شرایط درست ایف و الس رو رعایت نکردید و پشت هم ایف زدید و پرانتز ها رو خوب رعایت نکردید

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

          دیدگاه


            #6
            پاسخ : باگ های کدویژن

            نوشته اصلی توسط sepehr63 نمایش پست ها
            ممنون از جوابتون . موردی که چند دستور توی یک خط بنویسیم درست کار نکنه من با نوشتن و خواندن توی EEPROM زیاد دیدم . وقتی خط به خطشون میکنیم درست میشه هیچ خطا یا وارنینگ هم نمیده . بیشتر هم وقتی برنامه سنگین میشه این مشکل پیش میاد . اگه همون دستور کپی کنم توی یک پروژه جدید این مشکل ندارم
            من متوجه نمیشم که شما چگونه متوجه این باگ ها میشید ؟ برنامه رو توی میکرو میریزید ؟ بعد چگونه میفهمید که در این خط باگی وجود داره
            فقط میشه اینجور فهمید که مثلا توی اون خط دراز ... پورتی باید یک میشده و نشده یا تابع ای باید فراخوانی میشده و نشده
            بنظرم شما همنچین خطی که مشکل ایجاد کرده رو بذارید .. شاید خطایی در اون مشاهده بشه
            خب من همچین چیزی تا حالا تجربه نکردم
            کدویژن کاری با خط های ما نداره و فقط دستورات پشت سر هم کامپایل میکنه

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

            دیدگاه


              #7
              پاسخ : باگ های کدویژن

              نوشته اصلی توسط کاکو نمایش پست ها
              من متوجه نمیشم که شما چگونه متوجه این باگ ها میشید ؟ برنامه رو توی میکرو میریزید ؟ بعد چگونه میفهمید که در این خط باگی وجود داره
              فقط میشه اینجور فهمید که مثلا توی اون خط دراز ... پورتی باید یک میشده و نشده یا تابع ای باید فراخوانی میشده و نشده
              بنظرم شما همنچین خطی که مشکل ایجاد کرده رو بذارید .. شاید خطایی در اون مشاهده بشه
              خب من همچین چیزی تا حالا تجربه نکردم
              کدویژن کاری با خط های ما نداره و فقط دستورات پشت سر هم کامپایل میکنه

              شاید همچین چیزی وجود داشته باشه یا نسخه شما همچین باگی داشته باشه .. ولی من تجربه ش نکردم هرگز
              ولی بازم میتونه زیر سر اس رم باشه و از اونجا که از توابع زیاد حرف میزنید
              من اعدادی که قراره توی eeprom ریخته بشه داخل eeprom میریزم و بعد اون متغیر ها دوباره میخونم و روی lcd نمایش میدم
              توی برنامه ای که 65 درصد مگا 64 پر شده اعداد یا ریخته نشده یا چرت هست
              حالا اعداد خط به خط داخل eeprom میریزم درست میشه ؟؟؟
              نمونه


              eeprom a,b;

              void x(){
              a=10,b=20;
              }

              این بالایی توی کد من اشتباه ریخته میشه ولی گه زیر هم بنویسم درست میشه
              a=10
              b=20;

              توی یه برنامه سبک این مشکل ندیدم .
              یه مشکل دیگه هم که کد ویژن داره فایل استارتاپی هست که داخل پوشه نصب شده کد ویژن هست.
              این استارتاپ کاری به فیوز بیت استارتاپ نداره و حدود 5 میلی ثانیه اول همه پورت ها 1 هست ؟؟؟؟ با اوسکوپ دیدم .
              کدی که با اتمل استادیو بزنیم اینجوری نیست از همون اول 0 هست
              حالا باید بریم توی کانفیگوریشن و سر برگ c compiler و تیک use an external startup بزنیم و یک فایل استارتاپ براش بنویسیم و به برنامه اظافه کنیم
              ولی این کارم میکنم باز اول برنامه یه جایی درگیره که چند میلی ثانیه طول میکشه ولی با اتمل استادیو اینجوری نیست . از اول پایه ها 0 هستند

              دلیل: ادغام دو پست برای جلوگیری از اسپم

              این هم فایل استارتاپ خود کد ویژن که نزدیک به 5 میلی ثانیه زمان میبره که اجرا بشه . حالا نمیدونم کجا گیر میکنه؟؟؟

              ;CodeVisionAVR C Compiler
              ;(C) 1998-2013 Pavel Haiduc, HP InfoTech s.r.l.


              ;EXAMPLE STARTUP FILE FOR CodeVisionAVR V3.05 OR LATER


              .EQU __CLEAR_START=__SRAM_START ;START ADDRESS OF SRAM AREA TO CLEAR
              .EQU __CLEAR_SIZE=__SRAM_END-__SRAM_START+1 ;SIZE OF SRAM AREA TO CLEAR IN BYTES


              CLI ;DISABLE INTERRUPTS
              CLR R30
              OUT EECR,R30 ;DISABLE EEPROM ACCESS


              ;DISABLE THE WATCHDOG
              LDI R31,0x18
              OUT WDTCR,R31
              OUT WDTCR,R30


              OUT MCUCR,R30 ;MCUCR=0, NO EXTERNAL SRAM ACCESS


              ;CLEAR R2-R14
              LDI R24,13
              LDI R26,2
              CLR R27
              __CLEAR_REG:
              ST X+,R30
              DEC R24
              BRNE __CLEAR_REG


              ;CLEAR SRAM
              LDI R24,LOW(__CLEAR_SIZE)
              LDI R25,HIGH(__CLEAR_SIZE)
              LDI R26,LOW(__CLEAR_START)
              LDI R27,HIGH(__CLEAR_START)
              __CLEAR_SRAM:
              ST X+,R30
              SBIW R24,1
              BRNE __CLEAR_SRAM


              ; __GLOBAL_INI_TBL_PRESENT is predefined by the compiler
              ; if global variables are initialized during declaration
              #ifdef __GLOBAL_INI_TBL_PRESENT


              ;GLOBAL VARIABLES INITIALIZATION
              LDI R30,LOW(__GLOBAL_INI_TBL*2)
              LDI R31,HIGH(__GLOBAL_INI_TBL*2)
              __GLOBAL_INI_NEXT:
              LPM
              ADIW R30,1
              MOV R24,R0
              LPM
              ADIW R30,1
              MOV R25,R0
              SBIW R24,0
              BREQ __GLOBAL_INI_END
              LPM
              ADIW R30,1
              MOV R26,R0
              LPM
              ADIW R30,1
              MOV R27,R0
              LPM
              ADIW R30,1
              MOV R1,R0
              LPM
              ADIW R30,1
              MOV R22,R30
              MOV R23,R31
              MOV R31,R0
              MOV R30,R1
              __GLOBAL_INI_LOOP:
              LPM
              ADIW R30,1
              ST X+,R0
              SBIW R24,1
              BRNE __GLOBAL_INI_LOOP
              MOV R30,R22
              MOV R31,R23
              RJMP __GLOBAL_INI_NEXT
              __GLOBAL_INI_END:


              #endif


              دیدگاه


                #8
                پاسخ : باگ های کدویژن

                نوشته اصلی توسط sepehr63 نمایش پست ها
                void x(){
                a=10,b=20;
                }
                در کل میگم
                شما این متغیر ها رو بیرون تابع تعریف کردید و اینجا فقط میخواید مقدار دهی کنید
                خب بهتره پایان هر دستور سیمی کالن بذارید

                در مورد استارتاپ هم متوجه این اتفاقات بودم ولی جایی لنگ این موضئوع نبودم و شرایط حساسیتی نداشته
                و خوانش اون دستورات هم به هر حال زمانی میبره که باز متاثر از کلاک سیستم


                اگر بشه اول فایل استاراپ پورت ها رو صفر کرد که اونم مستلزم تعیین ورودی خروجی و نام گذاری پورت ها
                اگر تیکی وجود داشت که پورت ها رو از اول صفر کنه که اشنایی ندارم

                ولی چگونه توی اتمل استادیو پورت ها صفر هستن ؟؟ اون ها رو خروجی تعیین میکنه یا ورودی ؟؟

                پس ریجستری باید باشه برای این تنظیمات که به پورت ها رو به صورت پیش فرض تنظیم کنن و بعد اولین دستورزات لازم رو بررسی کنن
                وگرنه اتمل استادیو نمیتونه از صفر شروع کنه

                این کار احتمالا همون دستورات اولیه
                استارتاپ انجام بشه
                یا اینکه موقع پروئگرم کردن این تنظبم کردن صورت بگیره
                و به صورت حافظه دار و سخهت افزاری با شروع تغذیه انجام بشه

                سر از کار میکرو کسی درنیاورد که هر کی رفت سمتش یه روزی کم آورد


                جدیدترین ویرایش توسط کاکو; ۲۲:۰۰ ۱۴۰۱/۱۱/۲۵.

                دیدگاه

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