Жөндеу коды - Debug code

Жөндеу коды болып табылады компьютер коды а компьютерлік бағдарлама қателіктерді тексеру немесе қатенің себебін анықтауға көмектесу. Бұл an сияқты қарапайым болуы мүмкін жаңғырық пәрмені бағдарламаның белгілі бір нүктелерінде айнымалының мәнін шығару. Заманауи интеграцияланған даму орталары кейде бағдарламаның белгілі бір орындарында тоқтау нүктелерін орналастыруға мүмкіндік беріп, айнымалылардың мәнін бағдарламаның нәтижесінен гөрі IDE арқылы көре отырып, оны қажетсіз етеді.

Түзету кодын қолдану

Түзету кодының негізгі қызметі - көмектесу түзету код. Мұны бірнеше тәсілдермен жасауға болады, мысалы, баспа операторларын қолдану, бекіту командалары және блокты тексеру.

Кодтау кезінде қолданыңыз

Бағдарлама ішіндегі қателердің болуы мен орналасуын табу үшін кодқа шағын мәлімдемелер қосуға болады. Сондай-ақ, оны бағдарлама қабылдауы мүмкін болуы мүмкін пайдалану жағдайларын модельдеу үшін сынақ кірістерін ұсыну үшін пайдалануға болады. Ол сондай-ақ әлі дамып келе жатқан код үшін орын иесі ретінде қолданыла алады.

Бейне ойындарда қолданыңыз

Көптеген бейне ойын режимі, алдау кодтары, сияқты деңгейлік код, жеңілмеу т.с.с бастапқыда бағдарламалаушыларға және / немесе тестерлерге ойынның тексерілуге ​​тиісті бөліктеріне тез жетуіне кедергі болатын кедергілерді өткізіп жіберуге мүмкіндік беретін түзету коды ретінде енгізілген; және бұл жағдайларда алдау режимдері деп жиі аталады күйін келтіру режимі.

Ретінде ұсынылады озық тәжірибе қосымшалардың өндірістік нұсқаларынан түзету коды алынып тасталынады, себебі оларды баяулатуы мүмкін.[1] Алайда, кейбір ойындар ойын командаларын жақсарту тәсілі ретінде ойыншыларға осы командалар мен читтерді қалдырады. Мысалы, компьютердің нұсқасы Скирим ойыншыға командалық консольға қол жеткізуге мүмкіндік береді, оларға ойын барысында оның кейбір аспектілерін өзгерту мүмкіндігі беріледі. Бұл командаларға ойыншыға жеңілмейтіндік, телепортация және шексіз алтын беру кіреді.[2]

Жөндеу кодының мысалдары

Басып шығару күйін келтіру

Басып шығаруды жөндеу - бұл бағдарламадағы қателерді табу және оқшаулау үшін баспа операторларын пайдалану. Оның көмегімен кодтың деректер мәндерінің ағынын бақылауға болады. Жөндеу кодының бұл түрінің кейбір кемшіліктері бар. Бұл уақытша және әдетте қате жойылған кезде жойылады. Көптеген баспа операторларын қолдану бағдарламаның нақты шығуына әсер етуі және баспа операторларының қаншалықты жиі шақырылатынына байланысты жұмыс уақытын баяулатуы мүмкін. Кейбір жағдайларда баспа мәлімдемелері проблеманы табуға көмектеспейді, мысалы C ++ stdout а бар буферлі шығыс, кейде буфердің мазмұны жоғалады, бұл қате туралы ақпаратты дұрыс шығаруға әкеледі.[3]

C ++ мысалы

жарамсыз TestFunction(int ретToRun) {  cout << «алгоритм орындалуы керек» << ретToRun << «рет» << std::соңы;  үшін (int мен = 0; мен <= ретToRun; мен++) {    // іске қосу алгоритмі    алгоритм();    // баспа мәлімдемесін жөндеу    cout << «алгоритм іске қосу» << мен++ << «рет». << std::соңы;  }}

Жоғарыдағы кодта қате бар. 5 кірісінде бағдарлама келесі затты консольға басып шығаруы керек.

алгоритм 5 рет алгоритмді 1 рет, алгоритмді 2 рет, алгоритмді 3 рет, алгоритмді 4 рет, алгоритмді 5 рет орындау керек.

Нақты өнім келесі болып табылады, ол дұрыс емес.

алгоритм 5 рет алгоритмді 1 рет орындау керек.алгоритм 2 рет орындау.алгоритм 3 рет орындау.алгоритм 4 рет орындау.алгоритм 5 рет орындау.алгоритм 6 рет орындау.

Біздің функция алгоритм арқылы қосымша уақытты өткізіп жатыр және мұқият тексергенде біздің циклдың дұрыс емес кодталғандығы көрінеді.

Бекіту мәлімдемелері

Әдетте қатені түзетудің ең жақсы уақыты бағдарлама іске қосылғанға дейін болады. Мұны кодқа бекітуді енгізу арқылы жасауға болады. С тілінде мұны assert () командасының көмегімен жасауға болады. Assert пәрмені бағдарламаның осы нүктесінде бағдарламаның дұрыс жұмыс істеп тұрғанын тексере алады.[4]

C мысалы

int мен, а[10];үшін (мен = 0; мен < 10; ++мен){  а[мен] = 10-мен;}үшін (мен = 0; мен < 10; ++мен){  а[а[мен]] = а[мен];}

Жоғарыда келтірілген код кейбір күтпеген нәтижелерге әкелуі мүмкін шектен тыс қателіктерді тудырады. Төменде көрсетілгендей, кодты сенімді түрде, бекітуді қолдана отырып жазуға болады.

# қосу <assert.h>int мен, а[10];үшін (мен = 0; мен < 10; ++мен){  бекіту(0 <= мен && мен < 10);  а[мен] = 10-мен;}үшін (мен = 0; мен < 10; ++мен){  бекіту(0 <= мен && мен < 10);  бекіту(0 <= а[мен] && а[мен] < 10);  а[а[мен]] = а[мен];}

JUnit

JUnit java үшін қол жетімді қайталанатын тест жазу үшін қолданылатын қарапайым бағдарлама және бағдарламашыларға жеке блок тестін құруға мүмкіндік береді. Бірлік тесті - бұл тексерілетін кодтағы белгілі бір функцияны орындау үшін жазылған және әдетте кодтың шағын бірлігіне, мысалы, жалғыз әдіске немесе сыныпқа бағытталған код. Assert операторлары мен басқа тесттік мәлімдемелердің тіркесімін пайдаланып, бағдарламашылар әдіс немесе функцияның дұрыс орындалғанын білу үшін тестілік жағдайлардың жиынтығын жасай алады.[5]

Әдебиеттер тізімі

  1. ^ «Мұрағатталған көшірме». Архивтелген түпнұсқа 2010-04-02. Алынған 2010-03-26.CS1 maint: тақырып ретінде мұрағатталған көшірме (сілтеме)
  2. ^ http://www.pcgamer.com/2011/11/16/skyrim-console-commands-let-you-cheat-and-do-other-stuff/
  3. ^ http://oopweb.com/CPP/Documents/DebugCPP/Volume/techniques.html
  4. ^ http://www.csd.uwo.ca/~jamie/C/Debug/UGCS_CS2_debugging_notes.html
  5. ^ http://junit.org/