Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
3курс инф .docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
652.25 Кб
Скачать

39.57. Программаны орындау кезіндегі қателерді дұрыстау.

Егер приложение құрып ол орындалса ол дұрыс жұмыс жасап тұр деп айта алмаймыз. Онда көптеген қателер болуы әбден мүмкін. Ол әрине логикалық қателер болуы мүмкін. Бұл қателер кейбір деректердің байланысы кезінде болатын: нолге бөлу қателігі, толып кету, жоқ файлдың ашылып кетуі т.б. Тағы да дәл сол есеп кейде орындалатын кейде орындалмайтын қателіктер. Мұндай табу қиынға соғатын қателер әдетте айнымалылардың бастапқы мәндері болмағанда пайда болады.

Осындай жағдайларда қателердің себебі дұрыстау кезінде шығады. Бірінші рет компиляцига жіберген кезде бәрі дұрыс жұмыс жасап тұрған сияқты болады,ал екінші рет компиляцига жібергенде қателік туралы терезе шығады. Ол терезеде” проект Project1.exe EOverflow классының генерация кезінде толып кету хабарламасымен бірге шығару генерациясын шақырғаны жайлы. Процесс тоқтатылды. Әрі қарай жалғастыру үшін Step немесе Run командасын пайдаланыңыз”.

Бұл қателік туралы хабарлама шығару деп аталатын генерацияға әкеледі. Шығару (exceptions) әр түрлі қателіктерде генерация жасалынады. Қателік туралы хабарлама терезесі алдымыздан шықса әрі қарай не істейміз? Қателік хабарламасы терезесіндегі ОК батырмасын басып бізКод Редакторы терезесіне тап боламыз және белгіленген жол көрсетілген, жанында жасыл стрелкасы бар программамыздың кодын көреміз. Ол қатесі бар оператор.

Келесі әрекет:

-Ctrl-F2 пернесін басуға болады. Ол приложенияның орындалуын және түзетілуін тоқтады яғни үзеді.

-Run| Run командасын орындауға болады. Бұл қателіктерге қарамастан орындауды жалғастырады. Бірақ бұл ештеңеге әкелмейді,тек қателік жағдай қайталана береді.

-Программаның бөлігін қадам бойынша өтуге болады.

Қателік себебі анық болмаса жалғыз әдістің бірі:

-Приложениядағы болып жатқан қате процесстер туралы ақпарат алу керек. Оны бірнеше әдіс арқылы алуға болады. С++Builder6-де Tooltip Expression Evolution деген багалау мастері бар. Тышқаннын курсорын кодтағы айнымалының біріне ,мәселен А-ға, апарсақ “A=1E+308” деген жазуды көреміз. Осындай қарапайым әдіспен программадағы айнымалының мағынасын біле аламыз.

40. Watch List бақылау терезесі.

Айтылымдарды бағалау мастері, әрине жаксы құрал. Бірақ ол тек жалғыз айнымалы мағынасын береді,ал күрделі приложенияларда бірнеше айнымалыны көз алдымызда елестете алуымыз керек. Себебі соларды салыстыру арқылы приложенияның дұрыс емес жұмыс жасауынының себептерін түсіну керек. Осындай мүмкіндікті бақылау терезесі Watch List береді. Оны көріну күйіне қою үшін View| Debug Window| Watches командасын орындаймыз.

Бақылау терезесі өте жақсы құрал, бірақ онымен жұмыс жасау барысында кейбір ережелерді ұстану керек. Код жазып жатқанда үнсіз келісім бойынша барлық компоненттер және олардың қасиеттері ағымдағы формаға жатады. Бақылау терезесінде мұндай жорамалдар жасалмайды. Сондықтан терезеге Label1->Caption деп енгізсек, онда приложенияның орындалу барысында тоқтау болғанда ол айтылым орнына мынандай хабарлама аламыз: “Undefined symbol ‘Label1’ ”, яғни ‘Label1’ символы анықталмаған. Егер сол айтылымды формага Form1 сілтеме жасасақ, онда бәрі дұрыс жұмыс жасар еді.

Кейде айнымалыны бақылау мүмкін емес. Өйткені оптимизациялайтын компилятор шешім шығаратын кодтан өшіріп тастап, оны жүйелік регистрге сәйкестендіріп орналастырады. Ол приложенияның орындалуын жылдамдатады, жадыны үнемдейді, бірақ айнымалыларды бақылауға кедергі келтіреді. Мұндай жағдайда сәйкес айнымалыны кілттік Volatile сөзімен хабарлауға болады. Мысалы:

volatile int x;

Volatile спецификаторы компиляторға берілген айнымалыны регистрге сақтауға болмайтындығын айтады.

Дәл сол мақсатқа жету үшін ең жақсы нұсқа- Project| Options ашылған Advanced Compiler терезесіндегі Register Variables опциясын сөндіру.

Енді бақылау терезесімен жұмыс жасауды қарастырайық. Тышқанның оң жақ батырмасын шертіп ашылған мәзірден командалар тізбегін таңдаймыз: Edit Watch(отредактировать наблюдаемое выражение) немесе Add Watch( добавить новое наблюдаемое выражение). Екі жағдайда да Watch Properties терезесіне тап боламыз. Бұл терезеге одан да оңай Ctrl-F5 батырмасын басып, екі рет шерту арқылы түсуге болады.

Watch Properties терезесінің элементтерін кысқаша айта кетейік. Expression терезесіне кез келген айнымалы атын жазып қойсақ болады. Repeat count терезесі массивтерді бақылауда қолданылады. Digits енгізілетін сандардың разрядын анықтайды. Enabled идентификаторы приложенияның орындалу барысында бақылау терезесіне сәйкес айтылмдарды енгізуді сөндіруді болдырады.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]