Табыстар:
- Сәйкес код пен сценарий мәтінмәні бар жасанды интеллектке бұзылу жазбаларын (стек іздерін) беру арқылы ықтимал негізгі себептерді жылдам қысқарту мүмкіндігі
- Кодтағы гипотеза ретінде AI диагнозын растаудан және симптомды тестілеуден және өшіруден гөрі негізгі себепті тұрақты түрде шешу мүмкіндігі
- Жазбалар мен журналдардағы жеке деректерді бүркемелеу арқылы жөндеу кезінде құпиялылықты қорғау
Әрбір қолданба қателер береді; Жақсы әзірлеушіні ерекшелендіретін нәрсе - олар қателерді қаншалықты тез тауып, түзетеді. Мобильді жөндеу — мәселенің көзін табу және түзету — әсіресе қиын, себебі қате пайдаланушы құрылғысында, сіз көре алмайтын ортада орын алады. Көбінесе, сізде тек бұзылу журналы бар (жаңылау журналы/стек ізі — қолданба бұзылған кезде қайда кеткені туралы техникалық үзіліс). Жасанды интеллект осы құпия жазбаларды оқуда, ықтимал себептерді тізбелеуде және шешімдерді ұсынуда өте күшті. Бұл бөлімде біз AI-ны «қате детективі» ретінде қалай пайдалану керектігін үйренеміз, бірақ соңғы диагнозды тексеру және түзету жауапкершілігін сізге қалдырамыз.
Апат журналын оқу: AI ең жарқыраған жерде
Бұзылу журналы ұзақ және қорқынышты мәтін болып табылады; тәжірибесіз әзірлеуші қайда іздеу керектігін білмейді. AI бұл мәтінді секундтарда талдайды: ол қай жолда бұзылды, қандай ерекшелік тасталды, мүмкін себебі неде. Жалпы мобильді қателер анық және AI оларды тез таниды: NullPointerException (нөлдік мәнге қол жеткізуге тырысады), Android жүйесінде IndexOutOfBoundsException (болмайтын тізім элементіне қатынасу), iOS жүйесінде EXC_BAD_ACCESS (бос жадқа қол жеткізу), күтпеген жерден табылды.
Мобильді апаттардың ең көп таралған түрлері және олардың типтік себептері төмендегідей:
Қате (ерекшелік)
Платформа
типтік себеп
NullPointerException
Android
Нөлдік мәнге қатынасу
IndexOutOfBoundsException
Android
Бар емес тізім элементіне қатынасу
күтпеген жерден нөлге тең болды
iOS
Міндетті түрде нөлді міндетті түрде ашу (!)
EXC_BAD_ACCESS
iOS
Босатылған жадқа қол жеткізу
ANR/мұздату
Android
Негізгі жіпте ұзақ/ауыр өңдеу
Қадамдық жөндеу ағыны:
- Жазбаны жинаңыз. Бұзылу журналын, қате туралы хабарды және мүмкін болса, оны қайта жасау қадамдарын біріктіріңіз.
- AI контекстін беріңіз. Маған қатені ғана емес, кодтың тиісті бөлігін және оның не істен шыққанын айтыңыз.
- Ықтимал себептерді сұраңыз. «Маған ең ықтимал 3 себепті және әрқайсысын қалай тексеруге болатынын айтыңыз».
- Тексеру. Кодта және тестілеуде ұсынылған себепті растаңыз; Оны болжау арқылы түзетпеңіз.
- Оны түзетіп, қайта тексеріңіз. Қатенің шынымен жойылғанын және жаңа қателер жасалмағанын тексеріңіз.
Кеңес: AI-ға апат журналын берген кезде, сәйкес код үзіндісін де қосыңыз. Тек стек ізімен AI жалпы болжам жасайды; Кодты көргенде, нақты сызықты және нақты себебін табу ықтималдығы айтарлықтай артады. Контекст диагноздың сапасын анықтайды.
Жеке деректер тұзағы
Бұзылу журналдары мен журналдар жиі пайдаланушы деректерін қамтиды: электрондық пошта, пайдаланушы идентификаторы, орын, тіпті пішін мазмұны. Бұл жазбаны AI-ға сол күйінде қою жеке деректерді үшінші тарапқа беру болып табылады және KVKK/GDPR ережелерін бұзу болып табылады. Жазбаны жібермес бұрын жеке аймақтарды тазалаңыз (маска). Сондай-ақ, жеке деректерді қолданбаңыздың журналдарына басынан бастап жазудан сақ болыңыз; Жақсы журнал мәселені сипаттайды, бірақ сәйкестікті көрсетпейді.
Абайлаңыз: AI ұсынған түзету «қатенің үнін өшіруі» мүмкін, бірақ негізгі себебін шеше алмайды. Мысалы, NullPointerException файлын нөлдік тексерумен орау бұзылуды тоқтатады, бірақ мәннің неліктен бос екенін түсінбесеңіз, нақты логикалық қате жалғасады. Симптомды емес, ауруды емдеңіз.
Түбірлік себептерді талдау
Кәсіби жөндеудің мақсаты қатені өшіру емес, негізгі себебін табу. Мен AI-дан «неліктен бұл нөл болуы мүмкін, ол деректер ағынында қайда жоғалған болуы мүмкін?» Деп сұрадым. «Мен мұны қалай өшіремін?» Деп сұрайды. Бұл сұраудан әлдеқайда құнды. Түбірлік себеп табылғаннан кейін бір қатенің ондаған нұсқалары бірден шешіледі. AI осы тізбекті негіздеуде жақсы: деректерді енгізуден шығысқа дейін қадағалаңыз және оның қай жерде бұзылатынын ойлануын сұраңыз.
үш шағын іс
1-жағдай — 10 минутта 2 сағат жұмыс. Әзірлеуші тек белгілі бір Samsung үлгісінде бұзылған қатені іздеуге 2 сағат жұмсады. АИ-ге апат журналын (жеке аумақтарды тазалау) берді; YZ қате сол құрылғының басқа камера ажыратымдылығымен орын алатын жадтың толып кетуіне нұсқайтынын айтты. Анықтаманың көмегімен себебі 10 минутта табылды. AI іздеуді жылдамдатты, адам шешімді тексерді.
2-жағдай - Тығыздалған қате қайтарылды. Бір команда оны ұстап көру үшін AI ұсынысын қолдану арқылы қайталанатын апатты өшірді. Бұзылу тоқтады, бірақ пайдаланушылар «деректер сақталмай жатыр» деп шағымдана бастады; себебі нақты мәселе (деректер базасына қосылу) әлі де бар еді, ол енді ғана көрінбейтін болды. Түпкі себеп табылғаннан кейін, апат пен деректердің жоғалуы шешілді. Сабақ: үнсіздік - бұл шешім емес.
3-жағдай - Журналда деректер ағып кетті. Аудит қолданушылардың толық аты-жөні мен телефон нөмірлері қолданбаның бұзылу журналдарына жазылғанын анықтады. Әзірлеушілер бұл журналдарды AI жүйесіне тұрақты түрде қойды және қателерді түзетеді; Осылайша, жеке деректер бірнеше ай бойы жойылды. Журналдар маскирленіп, процесс түзетілді. Сабақ: құпиялылық түзету кезінде де қолданылады.
Әлсіз шақыру / Күшті шақыру
Нашар шақыру: «Неліктен бұл қате пайда болды? [стек ізі]»
Күшті ескерту: "Бұл менің Android қолданбамда бұзылу орын алуда. Мәтінмән:- Орындау кезінде: пайдаланушы өнім мәліметтерінен себетке қосуда- Тек кейбір құрылғыларда, жад көлемі аз үлгілерде- Қатысты код: [ViewModel және репозиторий бөлігі]- Бұзылу журналы (жеке деректер тазартылды): [стек ізі] Ең ықтимал 3 түбірлік себептерді тізімдеңіз. Сенімсіз жерде өз болжамыңызды айтыңыз».
Көшіретін үлгілер
Бұзылуды талдау үлгісі:"Келесі бұзылуды талдаңыз. Мәтінмән: [не істеп жатырсыз, қай құрылғы/нұсқа]. Сәйкес код: [код]. Бұзылу журналы (жеке деректер өшірілді): [іздеу]. Ең ықтимал 3 түпкі себеп пен тексеруді + әрқайсысы үшін тұрақты түзетуді көрсетіңіз. Сондай-ақ, симптомды өшіретін уақытша шешімдерді белгілеңіз."
Түбірлік себеп үлгісі: "Бұл мән күтпеген жерден [null/false] келеді. Енгізуден осы нүктеге дейінгі деректер ағынын қадағалаңыз: ол қайда жоғалуы немесе бүлінуі мүмкін? Әр кезеңде қай жерде тексеру керек екенін айтыңыз. [код]"
Журналды оқу үлгісі: «Осы журналдың шығуын түсіндіріңіз: қандай оқиғалар ретімен болды, ауытқу қай жерде, қатеге дейінгі соңғы дұрыс қадам қандай болды? [журнал — жеке деректер тазартылды]»
Көшіру үлгісі: "Қандай қадамдар, құрылғы күйлері және деректер осы қатені сенімді түрде қайта шығаруға тырысуым керек? Ықтималдық ретімен қатені тудыруы мүмкін жағдайларды тізімдеңіз. [сипаттама]"
Жалпы қателер
- Мәтінмәнсіз стек ізін беру. Сәйкес код пен сценарийсіз AI жалпы болжам жасайды.
- Жеке деректерді AI-ге журналдармен бірге қою. Құпиялықты бұзу; алдымен маска.
- Симптомды өшіріңіз. try-catch көмегімен апатты жасыру негізгі мәселені қалдырады және жаңа мәселелерді тудырады.
- Бірінші ұсынысты оны тексермей қолдану. АИ диагнозы гипотеза болып табылады; Кодпен растаңыз.
- Оны эмуляторда қайта шығаруға тырысуда. Кейбір қателер тек нақты құрылғыда/жағдайда пайда болады.
- Түзеткеннен кейін қайта сынамау. Түзету басқа нәрсені бұзған болуы мүмкін; Регрессияны тексеру.
Қысқаша
Жасанды интеллект жақсы жұмыс істейтін салалардың бірі - апат журналдарын оқу және ықтимал себептерді сұрыптау; Мәтінмән берілгенде диагноздың сапасы айтарлықтай жақсарады. Бірақ соңғы диагноз және түзету адамға тиесілі: AI ұсынысы код пен тестілеуде расталған гипотеза. Мақсат - симптомды өшіру емес, негізгі себебін жою; Дыбыссыз қате әдетте басқа пішінде қайтарылады. Бұзылу журналдарында жеке деректер болуы мүмкін; Оны AI-ға бермес бұрын оны бүркемеңіз және жеке деректерді басынан журналдарыңызға жазбаңыз.
Қолданбалы тапсырма
Сізде бар бұзылу журналын (немесе AI-дан жасаған үлгіні) алыңыз, ондағы кез келген жеке/ерекше деректерді бүркемелеңіз және оны «Crash талдау үлгісімен» AI-ға беріңіз. Түбірлік себептердің қайсысы AI тізімдерінің нақты түзетілгені және қайсысының дыбысын өшіретінін ажыратыңыз. Сіз таңдаған тұрақты түзетуді қолданып, қате жойылғанын және жаңа мәселелер туындамайтынын тексеріңіз.
бақылау парағы
- [ ] Мен сәйкес код пен сценарий мәтінмәні бар бұзылу журналын бердім
- [ ] Журналдардағы жеке/ерекше деректерді жасырдым
- [ ] Мен AI-дан дыбысты өшіруді емес, негізгі себеп пен тұрақты түзетуді сұрадым
- [ ] Мен диагнозды кодта және тестілеуде тексердім, мен оны соқыр қолданбадым
- [ ] Түзеткеннен кейін мен қатенің жойылғанын және регрессия болмағанын тексердім
- [ ] Мен қолданбам журналдарға жеке деректерді жазбайтынын тексердім